--- /dev/null
+/*\r
+\r
+ Copyright 2017, Huawei Technologies Co., Ltd.\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+\r
+ */\r
+\r
+var app = angular.module("ControllerApp", ["ui.router", "ngTable"])\r
+\r
+ /*.run(function($rootScope, $location, $state, LoginService) {\r
+ $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){\r
+ if (toState.authenticate && !LoginService.isAuthenticated()){\r
+ // User isn’t authenticated\r
+ $state.transitionTo("login");\r
+ event.preventDefault();\r
+ }\r
+ });\r
+ })*/\r
+ .config(function($stateProvider, $urlRouterProvider, $urlMatcherFactoryProvider) {\r
+ //$routeProvider.caseInsensitiveMatch = true;\r
+ $urlMatcherFactoryProvider.caseInsensitive(true);\r
+ $urlRouterProvider.otherwise('/controller');\r
+ //$locationProvider.html5Mode(true).hashPrefix('!');\r
+ $stateProvider\r
+\r
+\r
+ .state("controller", {\r
+ url: "/controller",\r
+ templateUrl: "templates/controller.html",\r
+ controller: "controllerCtrl"\r
+ })\r
+ })\r
+\r
+ /*-------------------------------------------------------------------------------Controller---------------------------------------------------------------------*/\r
+ .controller("controllerCtrl", function ($scope, controllerDataService, $log, $compile,NgTableParams, $state) {\r
+\r
+ $scope.title = "Controller";\r
+ $scope.init = function() {\r
+ controllerDataService.getControllerData()\r
+ .then(function (data) {\r
+ $scope.data = data;\r
+ console.log("Data: ");\r
+ $log.info(data);\r
+ loadButtons();\r
+ }, function (reason) {\r
+\r
+ $scope.message = "Error is :" + JSON.stringify(reason);\r
+ });\r
+ }\r
+\r
+ function loadButtons() {\r
+ var def_button_tpl = $(modelTemplate).filter('#defaultButtons').html();\r
+ var def_iconbutton_tpl = $(modelTemplate).filter('#defaultIconButtons').html();\r
+ var dialog = $(modelTemplate).filter('#dialog').html();\r
+ var add_data = {"title":"Create", "type":"btn btn-default", "gType": "plus-icon", "iconPosition":"left", "clickAction":"showAddModal()"};\r
+ // var delete_data = {"title":"Delete Selected", "type":"btn btn-default", "gType": "delete-icon", "iconPosition":"left", "clickAction":"deleteData()"};\r
+ var addhtml = Mustache.to_html(def_iconbutton_tpl, add_data);\r
+ //var deletehtml = Mustache.to_html(def_iconbutton_tpl, delete_data);\r
+ $('#extsysAction').html($compile(addhtml)($scope));\r
+ //$('#extsysAction').append($compile(deletehtml)($scope));\r
+\r
+ $scope.checkboxes = { 'checked': false, items: {} };\r
+\r
+ //var data = [{id: 1, name: "Moroni", age: 50}, {id: 2, name: "ABC", age: 30}, {id: 3, name: "Morhoni", age: 10}, {id: 4, name: "DABC", age: 31}, {id: 5, name: "Noor", age: 30}, {id: 6, name: "ABCD", age: 40}, {id: 7, name: "DABC", age: 31}, {id: 8, name: "Noor", age: 30}, {id: 9, name: "ABCD", age: 40}, {id: 10, name: "DABC", age: 31}, {id: 11, name: "Noor", age: 30}, {id: 12, name: "ABCD", age: 40}];\r
+ $scope.controllerTableParams = new NgTableParams({count: 5, sorting: {name: 'asc'} //{page: 1,count: 10,filter: {name: 'M'},sorting: {name: 'desc'}\r
+ }, { counts:[5, 10, 20, 50], dataset: $scope.data.controllerData});\r
+\r
+ /*$scope.$watch('checkboxes.checked', function(value) {\r
+ angular.forEach($scope.data.controllerData, function(item) {\r
+ console.log("#######"+item.id);\r
+ if (angular.isDefined(item.id)) {\r
+ $scope.checkboxes.items[item.id] = value;\r
+ }\r
+ });\r
+ });*/\r
+\r
+ var modelSubmit_data = {"title":"OK", "clickAction":"saveData(ext.id)"};\r
+ var modelSubmit_html = Mustache.to_html(def_button_tpl, modelSubmit_data);\r
+ $('#myModal #footerBtns').html($compile(modelSubmit_html)($scope));\r
+\r
+ var modelBtn_data = {"title":"Close", "clickAction":"closeModal()"};\r
+ var modelBtn_html = Mustache.to_html(def_button_tpl, modelBtn_data);\r
+ $('#myModal #footerBtns').append($compile(modelBtn_html)($scope));\r
+\r
+ var text = $(modelTemplate).filter('#textfield').html();\r
+ var dropDown = $(modelTemplate).filter('#simpleDropdownTmpl').html();\r
+\r
+ var extName = {"ErrMsg" : {"errmsg" : "Name is required.", "modalVar":"ext.Name", "errtag":"textboxErrName", "errfunc":"validatetextboxName", "required":true}};\r
+ $('#myModal #name').append($compile(Mustache.to_html(text, extName.ErrMsg))($scope));\r
+\r
+ var extURL = {"ErrMsg" : {"errmsg" : "URL is required.", "modalVar":"ext.url", "errtag":"textboxErrURL", "errfunc":"validatetextboxURL", "required":true}};\r
+ $('#myModal #url').append($compile(Mustache.to_html(text, extURL.ErrMsg))($scope));\r
+\r
+ var extUserName = {"ErrMsg" : {"errmsg" : "UserName is required.", "modalVar":"ext.userName", "errtag":"textboxErrUserName", "errfunc":"validatetextboxUserName", "required":true}};\r
+ $('#myModal #username').append($compile(Mustache.to_html(text, extUserName.ErrMsg))($scope));\r
+\r
+ var extPassword = {"ErrMsg" : {"errmsg" : "Password is required.", "modalVar":"ext.Password", "errtag":"textboxErrPassword", "errfunc":"validatetextboxPassword", "required":true}};\r
+ $('#myModal #password').append($compile(Mustache.to_html(text, extPassword.ErrMsg))($scope));\r
+\r
+ var extVersion = {"ErrMsg" : {"errmsg" : "Version is required.", "modalVar":"ext.Version"}};\r
+ $('#myModal #version').append($compile(Mustache.to_html(text, extVersion.ErrMsg))($scope));\r
+\r
+ var extVendor = {"ErrMsg" : {"errmsg" : "Vendor is required.", "modalVar":"ext.Vendor"}};\r
+ $('#myModal #vendor').append($compile(Mustache.to_html(text, extVendor.ErrMsg))($scope));\r
+\r
+ var extDescription = {"ErrMsg" : {"textboxErr" : "Description is required.", "modalVar":"ext.Description"}};\r
+ $('#myModal #description').append($compile(Mustache.to_html(text, extDescription.ErrMsg))($scope));\r
+\r
+ /*var extProtocol = {"ErrMsg" : {"textboxErr" : "Protocol is required.", "modalVar":"ext.protocol"}};\r
+ $('#myModal #protocol').append($compile(Mustache.to_html(text, extProtocol.ErrMsg))($scope));*/\r
+\r
+ var dropdowndata_protocol = {\r
+ "modalVar" : "ext.Protocol",\r
+ "labelField" : "itemLabel",\r
+ "optionsValue" : JSON.stringify($scope.data.dropdownProtocolData.item)\r
+ };\r
+\r
+ console.log("dropdown data:"+$scope.data.dropdownProtocolData.item);\r
+\r
+ $('#myModal #protocol').append($compile(Mustache.to_html(dropDown, dropdowndata_protocol))($scope));\r
+\r
+ var extProductName = {"ErrMsg" : {"textboxErr" : "ProductName is required.", "modalVar":"ext.productName"}};\r
+ $('#myModal #ProductName').append($compile(Mustache.to_html(text, extProductName.ErrMsg))($scope));\r
+\r
+ /*var extType = {"ErrMsg" : {"textboxErr" : "Type is required.", "modalVar":"ext.type"}};\r
+ $('#myModal #type').append($compile(Mustache.to_html(text, extType.ErrMsg))($scope));*/\r
+\r
+ var dropdowndata_type = {\r
+ "modalVar" : "ext.Type",\r
+ "labelField" : "itemLabel",\r
+ "optionsValue" : JSON.stringify($scope.data.dropdownTypeData.item)\r
+ };\r
+\r
+ $('#myModal #type').append($compile(Mustache.to_html(dropDown, dropdowndata_type))($scope));\r
+\r
+\r
+\r
+ /*\r
+ var extType = {"ErrMsg" : {"textboxErr" : "The name is required.", "modalVar":"ext.type", "placeholder":"Country"}};\r
+ $('#myModal #Type').append($compile(Mustache.to_html(text, extType.ErrMsg))($scope));\r
+\r
+ var extCreate = {"ErrMsg" : {"textboxErr" : "The name is required.", "modalVar":"ext.createTime", "placeholder":"memory"}};\r
+ $('#myModal #CreateTime').append($compile(Mustache.to_html(number, extCreate.ErrMsg))($scope));\r
+\r
+ var extOperation = {"ErrMsg" : {"textboxErr" : "The name is required.", "modalVar":"ext.operation", "placeholder":"Hard Disk"}};\r
+ $('#myModal #Operation').append($compile(Mustache.to_html(text, extOperation.ErrMsg))($scope));*/\r
+\r
+\r
+\r
+ }\r
+\r
+ $scope.validatetextboxName = function (value){\r
+ if($scope.ext.Name) {\r
+ $scope.textboxErrName = false;\r
+ }\r
+ else\r
+ $scope.textboxErrName = true;\r
+ }\r
+\r
+ $scope.validatetextboxURL = function (value){\r
+ if($scope.ext.url) {\r
+ $scope.textboxErrURL = false;\r
+ }\r
+ else\r
+ $scope.textboxErrURL = true;\r
+ }\r
+\r
+ $scope.validatetextboxUserName = function (value){\r
+ if($scope.ext.userName) {\r
+ $scope.textboxErrUserName = false;\r
+ }\r
+ else\r
+ $scope.textboxErrUserName = true;\r
+ }\r
+\r
+ $scope.validatetextboxPassword = function (value){\r
+ if($scope.ext.Password) {\r
+ $scope.textboxErrPassword = false;\r
+ }\r
+ else\r
+ $scope.textboxErrPassword = true;\r
+ }\r
+\r
+\r
+ $scope.closeModal = function() {\r
+ console.log("Closing Modal...");\r
+ $('#myModal').modal('hide');\r
+ $state.reload();\r
+ }\r
+\r
+\r
+\r
+ /*$scope.checkAll = function () {\r
+ angular.forEach($scope.data, function (data) {\r
+ data.select = $scope.selectAll;\r
+ });\r
+ };*/\r
+\r
+ $scope.showAddModal = function () {\r
+ console.log("Showing Modal to Add data");\r
+ $scope.ext = {};\r
+ //$("#myModal").modal();\r
+ $("#myModal").modal({}).draggable();\r
+ $scope.textboxErrName = false;\r
+ $scope.textboxErrURL = false;\r
+ $scope.textboxErrUserName = false;\r
+ $scope.textboxErrPassword = false;\r
+ }\r
+ $scope.saveData = function (id) {\r
+ if (!$scope.textboxErrName && !$scope.textboxErrURL && !$scope.textboxErrUserName && !$scope.textboxErrPassword) {\r
+ if (id) {\r
+ //edit data\r
+ console.log("Editing data.." + JSON.stringify($scope.ext));\r
+ controllerDataService.editControllerData($scope.ext)\r
+ .then(function (data) {\r
+ $scope.message = "Success :-)";\r
+ $state.reload();\r
+ //$state.go($state.current.name, {}, {reload: true})\r
+ },\r
+ function (reason) {\r
+ //$log.info(reason);\r
+ $scope.message = reason.status + " " + reason.statusText;\r
+ });\r
+ }\r
+ else {\r
+ console.log("Adding data.." + JSON.stringify($scope.ext));\r
+ controllerDataService.addControllerData($scope.ext)\r
+ .then(function (data) {\r
+\r
+ $scope.message = "Success :-)";\r
+ $state.reload();\r
+ //$state.go($state.current.name, {}, {reload: true})\r
+ },\r
+ function (reason) {\r
+ //$log.info(reason);\r
+ $scope.message = reason.status + " " + reason.statusText;\r
+ });\r
+ }\r
+ $('#myModal').modal('hide');\r
+ }\r
+ }\r
+\r
+ $scope.deleteData = function (id) {\r
+ var confirmation=false;\r
+ var checkbox = false;\r
+ var dialog_tpl = $(modelTemplate).filter('#personDialog').html();\r
+ var error = {"err_data" : { "title": "Error",\r
+ "showClose": "true",\r
+ "closeBtnTxt": "Cancel",\r
+ "icon": "glyphicon glyphicon-exclamation-sign",\r
+ "iconColor": "icon_error",\r
+ "msg": "Do you really wanted to Delete?.",\r
+ "buttons": [\r
+ {\r
+ "text": "Ok", "action": "deleteConfirmation("+id+")"\r
+ }]\r
+ }};\r
+ angular.forEach($scope.checkboxes.items, function(value) {\r
+ if(value) {\r
+ checkbox = true;\r
+ }\r
+ });\r
+ if (checkbox || (typeof id !== "undefined")) {\r
+ var html = Mustache.to_html(dialog_tpl, error.err_data);\r
+ $($compile(html)($scope)).modal({backdrop: "static"});\r
+ }\r
+ }\r
+\r
+ $scope.deleteConfirmation = function(id) {\r
+ console.log("data in controller is :");\r
+ //$log.info($scope.data.controllerData);\r
+ var deleteArr = [];\r
+ if (typeof id !== "undefined"){\r
+\r
+ deleteArr.push(id);\r
+ }\r
+ else {\r
+ angular.forEach($scope.checkboxes.items, function(value , key) {\r
+ if(value) {\r
+ console.log("deleting name is :"+key);\r
+ deleteArr.push(key);\r
+ }\r
+ });\r
+ }\r
+ console.log("deleteArr: "+deleteArr);\r
+ for(var i = 0; i < deleteArr.length; i++) {\r
+ console.log("To be deleted : "+deleteArr[i]);\r
+ controllerDataService.deleteControllerData(deleteArr[i])\r
+ .then(function(data){\r
+ $scope.message = "Successfully deleted :-)";\r
+ $state.reload();\r
+ },\r
+ function(reason){\r
+ $scope.message = reason.status + " " + reason.statusText;\r
+ });\r
+ }\r
+ }\r
+\r
+ $scope.editData = function (id) {\r
+ console.log("To be edited : " + id);\r
+ var dataFound = false;\r
+ angular.forEach($scope.data.controllerData, function (data) {\r
+ if (!dataFound) {\r
+ if (data.id == id) {\r
+ console.log("Found : " + data.Name);\r
+ console.log("Data is sssss :"+data);\r
+ $scope.ext = data;\r
+ $("#myModal").modal();\r
+ dataFound = true;\r
+ }\r
+ }\r
+ });\r
+ }\r
+\r
+\r
+ })\r
+\r
+\r
+/*var modelTemplate;\r
+\r
+function loadTemplate() {\r
+ $.get('template.html', function (template) {\r
+ modelTemplate = template;\r
+ });\r
+}*/\r
+\r
+var modelTemplate = "";\r
+function loadTemplate() {\r
+ $.get('framework/template.html', function (template) {\r
+ modelTemplate += template;\r
+ });\r
+ $.get('framework/templateContainer.html', function (template) {\r
+ modelTemplate += template;\r
+ });\r
+ $.get('framework/templateWidget.html', function (template) {\r
+ //console.log("Template is : "+template);\r
+ modelTemplate += template;\r
+ });\r
+ $.get('framework/templateNotification.html', function (template) {\r
+ modelTemplate += template;\r
+ });\r
+ $.get('framework/templateFunctional.html', function (template) {\r
+ modelTemplate += template;\r
+ });\r
+}\r
+\r
+\r
+\r
--- /dev/null
+/*\r
+\r
+ Copyright 2017, Huawei Technologies Co., Ltd.\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+\r
+ */\r
+\r
+\r
+app.factory("controllerDataService", function($http, DataService, $log){\r
+ var uri = 'http://192.168.9.13:18008';\r
+ return {\r
+ getControllerData : function() {\r
+ /*return $http({\r
+ url: 'http://localhost:3000/api/getControllerData',\r
+ method: 'GET',\r
+ headers: {'Content-Type': 'application/json'}\r
+ }).then(function(response){\r
+ //$log.info(response);\r
+ return response.data;\r
+ });*/\r
+ return DataService.get(uri+'/openoapi/extsys/v1/sdncontrollers')\r
+ .then(function(response){\r
+ $log.info("in get data service data is :"+response);\r
+ console.log(response);\r
+ return response;\r
+ });\r
+ },\r
+ addControllerData : function(controllerData) {\r
+ /*return $http({\r
+ url: 'http://localhost:3000/api/addProvinceData',\r
+ method: 'POST',\r
+ data: provinceDetail,\r
+ headers: {'Content-Type': 'application/json '}\r
+ }).then(function(response){\r
+ console.log("Response : ");\r
+ $log.info(response.data);\r
+ return response.data;\r
+ });*/\r
+ return DataService.post(uri+'/openoapi/extsys/v1/sdncontrollers', controllerData)\r
+ .then(function(response){\r
+ console.log("Successfully added.. Data returned in DataService is");\r
+ console.log(response.data);\r
+ return response.data;\r
+ });\r
+ },\r
+ deleteControllerData : function(id) {\r
+ /*return $http({\r
+ url: 'http://localhost:3000/api/deleteProvinceData',\r
+ method: 'POST',\r
+ data: {'idList':idList},\r
+ headers: {'Content-Type': 'application/json'}\r
+ }).then(function(response){\r
+ console.log("Successfully Deleted..");\r
+ $log.info(response);\r
+ return response.data;\r
+ });*/\r
+ return DataService.delete(uri+'/openoapi/extsys/v1/sdncontrollers/'+id)\r
+ .then(function(response){\r
+ $log.info("in delete data service data is :"+response);\r
+ console.log(response);\r
+ return response;\r
+ });\r
+ },\r
+ editControllerData : function(controllerData) {\r
+ /*return $http({\r
+ url: 'http://localhost:3000/api/editProvinceData',\r
+ method: 'POST',\r
+ data: provinceDetail,\r
+ headers: {'Content-Type': 'application/json'}\r
+ }).then(function(response){\r
+ console.log("Successfully Edited...");\r
+ $log.info(response);\r
+ return response.data;\r
+ });*/\r
+\r
+ return DataService.put(uri+'/openoapi/extsys/v1/sdncontrollers', controllerData)\r
+ .then(function(response){\r
+ console.log("Successfully edited.. Data returned in DataService is");\r
+ console.log(response.data);\r
+ return response.data;\r
+ });\r
+ }\r
+ }\r
+});
\ No newline at end of file
--- /dev/null
+<!--/* Copyright 2017, Huawei Technologies Co., Ltd.\r
+*\r
+* Licensed under the Apache License, Version 2.0 (the "License");\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an "AS IS" BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*/-->\r
+\r
+<div class="homecontent center">\r
+ <div class="col-md-12 col-sm-12 col-lg-12">\r
+<h4>{{title}}</h4>\r
+<br>\r
+<br>\r
+\r
+<div id="extsysAction" ng-init="init()">\r
+\r
+</div>\r
+<br><br>\r
+\r
+<table ng-table="controllerTableParams" class="table table-bordered table-striped customtable" show-filter="true">\r
+ <tr ng-repeat="controllerData in $data">\r
+ <!--<td header="'ng-table/headers/checkbox.html'">\r
+ <input type="checkbox" ng-model="checkboxes.items[controllerData.id]" />\r
+ </td>-->\r
+ <td title="'Name'" filter="{ Name: 'text'}" sortable="'Name'">\r
+ {{controllerData.Name}}\r
+ </td>\r
+ <td title="'Protocol'" filter="{ Protocol: 'text'}" sortable="'Protocol'">\r
+ {{controllerData.Protocol}}\r
+ </td>\r
+ <td title="'Product Name'" filter="{ productName: 'text'}" sortable="'productName'">\r
+ {{controllerData.productName}}\r
+ </td>\r
+ </td>\r
+ <td title="'Type'" filter="{ Type: 'text'}" sortable="'Type'">\r
+ {{controllerData.Type}}\r
+ </td>\r
+ <td title="'Vendor'" filter="{ Vendor: 'text'}" sortable="'Vendor'">\r
+ {{controllerData.Vendor}}\r
+ </td>\r
+ <td title="'Version'" filter="{ Version: 'number'}" sortable="'Version'">\r
+ {{controllerData.Version}}\r
+ </td>\r
+ <td title="'Description'" filter="{ Description: 'text'}" sortable="'Description'">\r
+ {{controllerData.Description}}\r
+ </td>\r
+ <td title="'Create Time'" filter="{ createTime: 'number'}" sortable="'createTime'">\r
+ {{controllerData.createTime}}\r
+ </td>\r
+ <td title="'Operation'" filter="{ Operation: 'text'}" sortable="'Operation'">\r
+ {{controllerData.Operation}}\r
+ </td>\r
+ <td title="'Action'">\r
+ <!-- <span class="pull-right glyphicon glyphicon-edit" ng-click="editData(controllerData.name)" style="cursor: pointer;margin: 0 5px"></span>\r
+ <span class="pull-right glyphicon glyphicon-trash" ng-click="deleteIndividualData(controllerData.name)" style="cursor: pointer;margin: 0 5px"></span>-->\r
+ <span ng-click="editData(controllerData.id)" style="cursor: pointer;margin: 0 5px"> <img src="framework/images/edit.png" height="15" align="left"/></span>\r
+ <span ng-click="deleteData(controllerData.id)" style="cursor: pointer;margin: 0 5px"><img src="framework/images/delete.png" height="15" align="middle"/></span>\r
+ </td>\r
+ </tr>\r
+</table>\r
+\r
+<!--<script type="text/ng-template" id="ng-table/headers/checkbox.html">\r
+ <input type="checkbox" ng-model="checkboxes.checked" name="filter-checkbox" value="" />\r
+</script>-->\r
+\r
+<div id="myTable"></div>\r
+\r
+<!-- Modal -->\r
+<div id="myModal" class="modal fade" role="dialog">\r
+ <div class="modal-dialog">\r
+\r
+ <!-- Modal content-->\r
+ <div class="modal-content">\r
+ <div class="modal-header">\r
+ <button type="button" class="close" data-dismiss="modal">×</button>\r
+ <h5 class="modal-title">Modal Header</h5>\r
+ </div>\r
+ <form name="extsysForm" method="post">\r
+ <div class="modal-body">\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Name</label>\r
+ <div id="name" class="col-xs-8">\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">URL</label>\r
+ <div id="url" class="col-xs-8">\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">User Name</label>\r
+ <div id="username" class="col-xs-8">\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Password</label>\r
+ <div id="password" class="col-xs-8">\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Version</label>\r
+ <div id="version" class="col-xs-8" >\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Vendor</label>\r
+ <div id="vendor" class="col-xs-8" >\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Description</label>\r
+ <div id="description" class="col-xs-8" >\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Protocol</label>\r
+ <div id="protocol" class="col-xs-8" >\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Product Name</label>\r
+ <div id="ProductName" class="col-xs-8" >\r
+ </div>\r
+ </div>\r
+\r
+ <div class="form-group row">\r
+ <label class="col-xs-4 col-form-label">Type</label>\r
+ <div id="type" class="col-xs-8" >\r
+ </div>\r
+ </div>\r
+\r
+ </div>\r
+\r
+ <div id="footerBtns" class="modal-footer">\r
+ <!--<button type="button" class="btn btn-default" ng-click="addData(province._id)" data-dismiss="modal" ng-disabled="provinceForm.$invalid">OK</button>-->\r
+ <!--<input type="submit" class="btn btn-default" value="Submit"/>\r
+ <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>-->\r
+ </div>\r
+ </form>\r
+ </div>\r
+\r
+\r
+ </div>\r
+</div>\r
+ </div>\r
+ </div>
\ No newline at end of file