1 var app = angular.module("lcApp", ["ui.router", "ngTable"])/*, 'ui.bootstrap', 'ui.bootstrap.modal'*/
\r
3 /*.run(function($rootScope, $location, $state, LoginService) {
\r
4 $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){
\r
5 if (toState.authenticate && !LoginService.isAuthenticated()){
\r
6 // User isn’t authenticated
\r
7 $state.transitionTo("login");
\r
8 event.preventDefault();
\r
13 /*.provider('modalState', function($stateProvider) {
\r
14 var provider = this;
\r
15 this.$get = function() {
\r
18 this.state = function(stateName, options) {
\r
20 $stateProvider.state(stateName, {
\r
22 onEnter: function($modal, $state) {
\r
23 modalInstance = $modal.open(options);
\r
24 modalInstance.result['finally'](function() {
\r
25 modalInstance = null;
\r
26 if ($state.$current.name === stateName) {
\r
31 onExit: function() {
\r
32 if (modalInstance) {
\r
33 modalInstance.close();
\r
41 .config(function($stateProvider, $urlRouterProvider, $urlMatcherFactoryProvider){/*modalStateProvider*/
\r
42 //$routeProvider.caseInsensitiveMatch = true;
\r
43 $urlMatcherFactoryProvider.caseInsensitive(true);
\r
44 $urlRouterProvider.otherwise('/home');
\r
45 //$locationProvider.html5Mode(true).hashPrefix('!');
\r
51 templateUrl : "templates/home.html",
\r
52 controller : "homeCtrl"
\r
55 .state("home.lcTabs", {
\r
57 templateUrl : "templates/lctabs.html",
\r
58 controller : "lcTabsCtrl"
\r
60 .state("home.lcTabs.detailInfo", {
\r
61 url : "/detailInfo",
\r
62 templateUrl : "templates/detailInfo.html",
\r
63 controller : "detailInfoCtrl"
\r
65 /*.state("home.lcTabs.detailInfo1", {
\r
66 url : "/detailInfo",
\r
67 templateUrl : "templates/detailInfo.html",
\r
68 controller : "detailInfoCtrl"
\r
70 .state("home.lcTabs.topo", {
\r
72 templateUrl : "templates/topo.html"
\r
74 .state("home.lcTabs.inputData", {
\r
76 templateUrl : "templates/inputData.html",
\r
77 controller : "inputDataCtrl"
\r
79 .state("home.lcTabs.detailInfo.overlayVPN", {
\r
81 templateUrl : "templates/overlayVPN.html",
\r
82 controller : "overlayVPNCtrl"
\r
84 .state("home.lcTabs.detailInfo.underlayVPN", {
\r
85 url: "/underlayVPN",
\r
86 templateUrl : "templates/underlayVPN.html",
\r
87 controller : "underlayVPNCtrl"
\r
89 /*modalStateProvider.state("home.lcTabs1", {
\r
91 templateUrl: 'templates/lctabs.html'
\r
96 .controller('homeCtrl', function($scope, $compile, $state, $log, DataService, NgTableParams) {
\r
97 $scope.param="lctableData";
\r
99 $scope.init = function() {
\r
100 DataService.loadGetServiceData()
\r
101 .then(function (data) {
\r
103 $scope.tableData = data.lcData;
\r
104 var tableData = data.lcData;
\r
108 $scope.error = "Error!";
\r
110 }, function (reason) {
\r
111 $scope.error = "Error ! " + reason;
\r
116 $scope.callLcTab = function(id) {
\r
117 /*console.log("Call ME as hi" + id);
\r
118 $scope.param="lcTabData";
\r
119 DataService.getAllData($scope.param)
\r
120 .then(function (data) {
\r
122 $scope.lctabsData = data;
\r
123 console.log("bye"+data.id);
\r
127 $scope.error = "Incorrect username/password !";
\r
129 }, function (reason) {
\r
130 $scope.error = "Incorrect username/password !";
\r
133 $scope.row_id = id;*/
\r
135 $scope.callModal = function(id) {
\r
136 console.log("Call ME as " + id);
\r
137 // $scope.row_id = id;
\r
138 //$state.go('home.lcTabs', {'id': id});
\r
139 //$("#popupModal").modal();
\r
140 /*$state.go('home.lcTabs.detailInfo', {'id': id});*/
\r
143 function loadTabData() {
\r
144 console.log("hi tab");
\r
145 var tab_tpl = $(modelTemplate).filter('#tabs').html();
\r
146 var html = Mustache.to_html(tab_tpl, $scope.lctabsData.tabData);
\r
147 $('#lctabArea').html(html);
\r
150 function loadTableData() {
\r
151 console.log("In loadData()");
\r
153 var def_button_tpl = $(modelTemplate).filter('#defaultButtons').html();
\r
154 var def_iconbutton_tpl = $(modelTemplate).filter('#defaultIconButtons').html();
\r
155 /*var add_data = {"title":"Add", "clickAction":"showAddModal()"};*/
\r
156 var add_data = {"title":"Create", "type":"btn btn-default", "gType": "glyphicon-plus", "iconPosition":"left", "clickAction":"showAddModal()"};
\r
157 var delete_data = {"title":"Delete Selected", "clickAction":"deleteData()"};
\r
158 var addhtml = Mustache.to_html(def_iconbutton_tpl, add_data);
\r
159 var deletehtml = Mustache.to_html(def_button_tpl, delete_data);
\r
160 $('#lcTableAction').html($compile(addhtml)($scope));
\r
161 $('#lcTableAction').append($compile(deletehtml)($scope));
\r
163 $scope.checkboxes = { 'checked': false, items: {} };
\r
165 $scope.tableParams = new NgTableParams({count: 5, sorting: {name: 'asc'} //{page: 1,count: 10,filter: {name: 'M'},sorting: {name: 'desc'}
\r
166 }, { counts:[5, 10, 15], dataset: $scope.tableData});
\r
168 $scope.$watch('checkboxes.checked', function(value) {
\r
169 angular.forEach($scope.tableData, function(item) {
\r
170 if (angular.isDefined(item.id)) {
\r
171 $scope.checkboxes.items[item.id] = value;
\r
176 $scope.tableParams_tpDetails = new NgTableParams({count: 5, sorting: {tp_name: 'asc'} //{page: 1,count: 10,filter: {name: 'M'},sorting: {name: 'desc'}
\r
177 }, { counts:[5, 10, 15], dataset: $scope.tableData});
\r
180 $scope.selectedRow = null; // initialize our variable to null
\r
181 $scope.setClickedRow = function(index, id){ //function that sets the value of selectedRow to current index
\r
182 $scope.selectedRow = index;
\r
183 console.log("Selected Row : " +id+" is "+ $scope.selectedRow);
\r
184 //$state.go('home.lcTabs', {'id': id});
\r
185 $state.go('home.lcTabs.detailInfo', {'id': id});
\r
190 var text = $(modelTemplate).filter('#textfield').html();
\r
191 var number = $(modelTemplate).filter('#numeric').html();
\r
192 var dropDown = $(modelTemplate).filter('#simpleDropdownTmpl').html();
\r
194 var dataText = {"ErrMsg" : {"textboxErr" : "Service name is required.", "modalVar":"lifecycleData.name", "placeholder":"Service Name"}};
\r
195 $('#myModal .serviceName').html($compile(Mustache.to_html(text, dataText.ErrMsg))($scope));
\r
197 var TempNameText = {"ErrMsg" : {"textboxErr" : "Template name is required.", "modalVar":"lifecycleData.template", "placeholder":"Template Name"}};
\r
198 $('#myModal .templateName').html($compile(Mustache.to_html(text, TempNameText.ErrMsg))($scope));
\r
200 //var creatorText = {"ErrMsg" : {"textboxErr" : "Creator is required.", "modalVar":"lifecycleData.creator", "placeholder":"Creator"}};
\r
202 "dropSimple_data": {
\r
203 "title": "--Select--",
\r
205 {"itemLabel": "1.1"}, {"itemLabel": "1.2"}
\r
209 $('#myModal #plainDropDown').html($compile(Mustache.to_html(dropDown, $scope.data.dropSimple_data))($scope));*/
\r
211 DataService.generateTemplatesComponent()
\r
212 .then(function (tmplatesResponse) {
\r
213 console.log("Data Template :: ");
\r
214 $log.info(tmplatesResponse);
\r
215 // var templatesInfo = translateToTemplatesInfo(tmplatesResponse);
\r
216 // document.getElementById("svcTempl").innerHTML = templatesInfo;
\r
217 $scope.optionsValue = tmplatesResponse;
\r
218 //$scope.someOptions = [{serviceTemplateId:"1",templateName:"1.1"}, {serviceTemplateId:"2",templateName:"1.2"}];
\r
219 // $scope.someOptions = [{"serviceTemplateId": '1', "templateName": "1.1"},{"serviceTemplateId": '2', "templateName": "1.2"}]
\r
220 // console.log(":: " + JSON.stringify($scope.optionsValue));
\r
221 }, function (reason) {
\r
222 $scope.error = "Error ! " + reason;
\r
227 //$('#myModal .creator').html($compile(Mustache.to_html(text, creatorText.ErrMsg))($scope));
\r
229 var modelSubmit_data = {"title":"Submit", "clickAction":"saveData(lifecycleData.id)"};
\r
230 var modelSubmit_html = Mustache.to_html(def_button_tpl, modelSubmit_data);
\r
231 $('#myModal #footerBtns').html($compile(modelSubmit_html)($scope));
\r
233 var modelDelete_data = {"title":"Close", "clickAction":"closeModal()"};
\r
234 var modelDelete_html = Mustache.to_html(def_button_tpl, modelDelete_data);
\r
235 $('#myModal #footerBtns').append($compile(modelDelete_html)($scope));
\r
240 * generate templates html string
\r
244 function translateToTemplatesInfo(templates) {
\r
245 var options = '<option value="select">--select--</option>';
\r
247 for (i = 0; i < templates.length; i += 1) {
\r
248 var option = '<option value="' + templates[i].serviceTemplateId + '">' + templates[i].templateName
\r
250 options = options + option;
\r
256 $scope.validatetextbox = function (value){
\r
257 if($scope.lifecycleData.service_name) {
\r
258 $scope.textboxErr = false;
\r
261 $scope.textboxErr = true;
\r
265 $scope.checkAll = function() {
\r
266 console.log("Checked ..");
\r
267 angular.forEach($scope.tableData, function(data) {
\r
268 //data.select = $scope.selectAll;
\r
269 $scope.checkboxes.items[data.id]
\r
272 $scope.test = function(id) {
\r
273 $state.go('home.lcTabs.detailInfo', {'id': id});
\r
277 $scope.templateParam = function() {
\r
278 //$scope.lifecycleData.optSelect = 1.2;
\r
279 //$log.info($scope.lifecycleData);
\r
281 DataService.fetchCreateParameters($scope.lifecycleData.optSelect)
\r
282 .then(function (tmplatesParamResponse) {
\r
283 console.log("Data Param Template :: ");
\r
284 $log.info(tmplatesParamResponse);
\r
285 $scope.paramJsonObj= tmplatesParamResponse.templateName;
\r
287 }, function (reason) {
\r
288 $scope.error = "Error ! " + reason;
\r
296 $scope.showAddModal = function() {
\r
297 console.log("Showing Modal to Add data");
\r
298 $scope.lifecycleData = {};
\r
299 $scope.textboxErr = false;
\r
301 //$("#myModal").modal();
\r
302 $("#myModal").modal({}).draggable();
\r
304 $scope.closeModal = function() {
\r
305 console.log("Closing Modal...");
\r
306 $('#myModal').modal('hide');
\r
309 $scope.editData = function(id) {
\r
310 $scope.textboxErr = false;
\r
311 $scope.ipv4Err = false;
\r
312 $scope.numericErr = false;
\r
313 console.log("To be edited : " + id);
\r
314 var dataFound = false;
\r
315 angular.forEach($scope.tableData, function(data) {
\r
317 if (data.id == id) {
\r
318 console.log("Found : " + data.id);
\r
319 $scope.lifecycleData = data;
\r
320 /*$scope.province.province_name = data.province_name;
\r
321 $scope.province.ip = data.ip;
\r
322 $scope.province.port = data.port;*/
\r
324 $("#myModal").modal();
\r
331 $scope.saveData = function() {
\r
333 var sengMsgObj = {};//collectCreateParamfromUI('', 'create', $scope.templateParameters.paramJsonObj);
\r
334 //createServiceInstance(sengMsgObj)
\r
335 DataService.createServiceInstance(lifecycleData, sengMsgObj)
\r
336 .then(function (response) {
\r
337 $log.info(response);
\r
339 }, function (reason) {
\r
340 $scope.error = "Error ! " + reason;
\r
345 * convert the template params obj to html UI string
\r
347 * @param identify the object identify, it should be different every time
\r
348 * @return the html component string
\r
350 function collectCreateParamfromUI(parentHost,identify, createParam) {
\r
351 // the create params used for create msg
\r
352 var paramSentObj = {
\r
354 nodeTemplateName:'',
\r
357 additionalParamForNs:{}
\r
359 // get the domain value
\r
360 if (undefined != createParam.domainHost && 'enum' === createParam.domainHost.type) {
\r
361 var domain = collectParamValue(identify, createParam.domainHost);
\r
362 paramSentObj.domainHost = collectParamValue(identify, createParam.domainHost)
\r
364 //if parent domainHost is not '' and local domain host is'', it should be setted as parent
\r
365 if('' != parentHost && '' == paramSentObj.domainHost){
\r
366 paramSentObj.domainHost = parentHost;
\r
368 paramSentObj.nodeTemplateName = createParam.nodeTemplateName;
\r
369 paramSentObj.nodeType = createParam.nodeType;
\r
371 // get own param value from UI
\r
372 createParam.additionalParamForNs.forEach(function(param) {
\r
373 paramSentObj.additionalParamForNs[param.name] = collectParamValue(identify, param);
\r
375 // get segments param value from UI
\r
376 createParam.segments.forEach(function(segment) {
\r
377 // the identify for segment
\r
378 var segmentIdentify = '' == identify ? segment.nodeTemplateName
\r
379 : identify + '_' + segment.nodeTemplateName;
\r
380 var segmentObj = collectCreateParamfromUI(paramSentObj.domainHost, segmentIdentify, segment);
\r
381 paramSentObj.segments.push(segmentObj);
\r
383 return paramSentObj;
\r
389 .controller('lcTabsCtrl', function($scope, $state, $stateParams) {
\r
390 //console.log("$stateParams.id:: " + $stateParams.id);
\r
391 //$state.transitionTo("home.lcTabs({id: "+$stateParams.id+"})");
\r
394 $state.go('home.lcTabs.detailInfo', {'id': $stateParams.id});
\r
398 .controller('detailInfoCtrl', function($scope, $stateParams, $compile, DataService) {
\r
399 console.log("detailInfoCtrl --> $stateParams.id:: " + $stateParams.id);
\r
400 //$scope.currentId = $stateParams.id;
\r
401 $scope.rightPanelHeader = "SDNO-VPN Manager";
\r
403 var jsonData = DataService.loadServiceDetails($stateParams.id);
\r
404 $(".accordion").html("");
\r
405 for (var i = 0; i < jsonData.length; i++) {
\r
406 //console.log("jsonData Name: " + jsonData[i].name);
\r
407 if (jsonData[i].name == "sdno") {
\r
408 //$("#sdnoLink").text(jsonData[i].name.toUpperCase());
\r
409 //console.log("Adding Accordian to SDNO");
\r
410 $(".accordion").append($compile(addAccordionData("sdno", jsonData[i].name.toUpperCase(), $stateParams.id))($scope));
\r
412 else if (jsonData[i].name == "gso") {
\r
413 //console.log("Adding Accordian to GSO");
\r
414 $(".accordion").append($compile(addAccordionData("gso", jsonData[i].name.toUpperCase(), $stateParams.id))($scope));
\r
416 else if (jsonData[i].name == "nfvo") {
\r
417 //console.log("Adding Accordian to NFVO");
\r
418 $(".accordion").append($compile(addAccordionData("nfvo", jsonData[i].name.toUpperCase(), $stateParams.id))($scope));
\r
425 function addAccordionData(type, text, id) {
\r
426 console.log("id:"+id);
\r
428 content += '<div class="panel panel-default"><div class="panel-heading">';
\r
429 content += '<h6 class="panel-title">';
\r
430 content += '<a style="text-decoration:none;" data-toggle="collapse" data-parent="#accordion" data-target="#collapseOne_'+type+'" onClick="fnLoadTblData(this, \''+type+'\');">';
\r
431 content += '<span id="sdnoLink">'+text+'</span></a>';
\r
432 content += '</h6></div>';
\r
433 if(type == "sdno") {
\r
434 content += '<div id="collapseOne_' + type + '" class="panel-collapse collapse in">';
\r
436 content += '<div id="collapseOne_' + type + '" class="panel-collapse collapse">';
\r
438 content += '<ul class="list-group nomargin">';
\r
440 if(type == "sdno") {
\r
441 content += '<li id="overLink" class="list-group-item selected textAlign"><span class="glyphicon glyphicon-pencil text-primary pencilimg"></span><a ui-sref=".overlayVPN" ui-sref-active="link_active_DetailInfo" href="#/home/lcTabs/'+id+'/detailInfo/overlayVPN">Overlay VPN</a>';
\r
442 content += '</li>';
\r
443 content += '<li id="underLink" class="list-group-item textAlign"><span class="glyphicon glyphicon-pencil text-primary pencilimg"></span><a ui-sref=".underlayVPN" ui-sref-active="link_active_DetailInfo" href="#/home/lcTabs/'+id+'/detailInfo/underlayVPN">Underlay VPN</a>';
\r
444 content += '</li>';
\r
446 else if(type == "gso"){
\r
447 content += '<li id="linkgso" class="list-group-item textAlign"><!--<span class="glyphicon glyphicon-pencil text-primary"></span>--><span class="glyphicon glyphicon-pencil text-primary pencilimg"></span><span>OPEN-O</span></li>';
\r
449 else if(type == "nfvo"){
\r
450 content += '<li id="linknfvo" class="list-group-item textAlign"><span class="glyphicon glyphicon-pencil text-primary pencilimg"></span><span>ZTE</span></li>';
\r
452 content += '</ul></div></div>';
\r
457 /*-------------------------------------------------------------------------------OverlayVPN---------------------------------------------------------------------*/
\r
459 .controller("overlayVPNCtrl", function($scope, $rootScope, $compile, DataService, NgTableParams){
\r
460 $scope.message = "Overlay VPN";
\r
462 $scope.init = function() {
\r
463 //console.log("Overlay VPN... ng-init + " + $rootScope.modelTemplate);
\r
464 DataService.getOverlayData()
\r
465 .then(function(data){
\r
466 $scope.overlayData = data.overlayData;
\r
467 console.log("Data: ");
\r
469 }, function(reason){
\r
470 $scope.message = "Error is :" + JSON.stringify(reason);
\r
473 function loadButtons() {
\r
474 //console.log("Got it : " + $scope.$parent.getTemplate("defaultButtons"));
\r
475 var def_button_tpl = $(modelTemplate).filter('#defaultButtons').html();
\r
476 console.log("template: " + def_button_tpl);
\r
478 var delete_data = {"title":"Delete Selected", "clickAction":"deleteData()"};
\r
479 var deletehtml = Mustache.to_html(def_button_tpl, delete_data);
\r
480 $('div.overlayAction').html($compile(deletehtml)($scope));
\r
482 $scope.tableParams = new NgTableParams({count: 5, sorting: {id: 'asc'} //{page: 1,count: 10,filter: {name: 'M'},sorting: {name: 'desc'}
\r
483 }, { counts:[], dataset: $scope.overlayData});
\r
485 $scope.checkboxes = { 'checked': false, items: {} };
\r
487 $scope.$watch('checkboxes.checked', function(value) {
\r
488 angular.forEach($scope.overlayData, function(item) {
\r
489 if (angular.isDefined(item.id)) {
\r
490 $scope.checkboxes.items[item.id] = value;
\r
495 $scope.checkAll = function() {
\r
496 console.log("Checked ..");
\r
497 angular.forEach($scope.overlayData, function(data) {
\r
498 $scope.checkboxes.items[user.id]
\r
503 /*-------------------------------------------------------------------------------UnderlayVPN---------------------------------------------------------------------*/
\r
505 .controller("underlayVPNCtrl", function($scope, $rootScope, $compile, DataService, NgTableParams){
\r
506 $scope.message = "Underlay VPN";
\r
508 $scope.init = function() {
\r
509 //console.log("Underlay VPN... ng-init + " + $rootScope.modelTemplate);
\r
510 DataService.getUnderlayData()
\r
511 .then(function(data){
\r
512 $scope.underlayVPN = data.underlayVPN;
\r
513 console.log("Data: ");
\r
515 }, function(reason){
\r
516 $scope.message = "Error is :" + JSON.stringify(reason);
\r
519 function loadButtons() {
\r
520 var def_button_tpl = $(modelTemplate).filter('#defaultButtons').html();
\r
521 //console.log("template: " + def_button_tpl);
\r
523 var delete_data = {"title":"Delete Selected", "clickAction":"deleteData()"};
\r
524 var deletehtml = Mustache.to_html(def_button_tpl, delete_data);
\r
525 $('div.underlayAction').html($compile(deletehtml)($scope));
\r
527 $scope.tableParams = new NgTableParams({count: 5, sorting: {id: 'asc'} //{page: 1,count: 10,filter: {name: 'M'},sorting: {name: 'desc'}
\r
528 }, { counts:[5, 10], dataset: $scope.underlayVPN.underlayData});
\r
530 $scope.checkboxes = { 'checked': false, items: {} };
\r
532 $scope.$watch('checkboxes.checked', function(value) {
\r
533 angular.forEach($scope.underlayVPN.underlayData, function(item) {
\r
534 if (angular.isDefined(item.id)) {
\r
535 $scope.checkboxes.items[item.id] = value;
\r
540 $scope.tableParams_tpDetails = new NgTableParams({count: 5, sorting: {id: 'asc'} //{page: 1,count: 10,filter: {name: 'M'},sorting: {name: 'desc'}
\r
541 }, { counts:[5, 10], dataset: $scope.underlayVPN.tp_details});
\r
543 $scope.checkAll = function() {
\r
544 console.log("Checked ..");
\r
545 angular.forEach($scope.underlayVPN.underlayData, function(data) {
\r
546 $scope.checkboxes.items[data.id]
\r
551 .controller('inputDataCtrl', function($scope, $stateParams, $log, DataService) {
\r
552 console.log("inputDataCtrl --> $stateParams.id:: " + $stateParams.id);
\r
553 $scope.inputData = DataService.getSavedLCData($stateParams.id);
\r
554 $log.info($scope.inputData);
\r
555 /*for(var i = 0; i < $scope.inputData.length; i++) {
\r
556 //var def_button_tpl = $(modelTemplate).filter('#defaultButtons').html();
\r
557 $("#inputDataElements").appendChild("<span>Shahid</span>");
\r
561 $("div.inputDataElements").html("");
\r
562 for (var prop in $scope.inputData) {
\r
563 //console.log('obj.' + prop, '=', $scope.inputData[prop]);
\r
564 //$("#inputDataElements").append("<div><span>"+prop+": </span><span>"+$scope.inputData[prop]+"</span></div>");
\r
565 $("div.inputDataElements").append('<div class="mT15 form-group row" style="margin-top:35px;"><div class="col-md-2 col-xs-2 col-lg-2 col-sm-2" align="left"><label class="control-label"><span style="font-size:16px;">'+ prop + ':</span></label></div><div class="col-md-3 col-xs-3 col-lg-3 col-sm-3"><input type="text" name="" maxlength="256" data-toggle="tooltip" data-placement="top" title="'+ $scope.inputData[prop] + '" value="'+ $scope.inputData[prop] + '" readonly disabled/></div></div>');
\r
571 function loadTemplate() {
\r
572 $.get('template.html', function(template) {
\r
573 modelTemplate = template;
\r