GBP UI initial commit
[groupbasedpolicy.git] / groupbasedpolicy-ui / module / src / main / resources / gbp / gbp.controller.js
1 var modules = ['app/gbp/gbp.module',\r
2                'app/gbp/gbp.services'\r
3                ];\r
4 \r
5 \r
6 define(modules, function(gbp) {\r
7 \r
8     gbp.register.controller('gbpCtrl', ['$scope', '$rootScope', '$http', '$timeout', 'PGNServices', 'TopoServices', 'GBPTenantServices', 'GBPConstants', 'DesignGbpFactory',\r
9         function ($scope, $rootScope, $http, $timeout, PGNServices, TopoServices, GBPTenantServices, GBPConstants, DesignGbpFactory) {\r
10             $rootScope['section_logo'] = 'logo_yangui';\r
11             $scope.view_path =  'src/app/gbp/views/';\r
12             $scope.topologyData = { nodes: [], links: [] };\r
13             $scope.topologyType = null;\r
14             $scope.legend = {};\r
15             $scope.showLegend = false;\r
16 \r
17             var reloadShowLegend = function() {\r
18                 $scope.showLegend = !$.isEmptyObject($scope.legend);\r
19             };\r
20 \r
21             $scope.settingsSigma = {\r
22                 defaultLabelColor: '#fff',\r
23                 doubleClickEnabled: false,\r
24                 labelThreshold: 8\r
25             };\r
26 \r
27             $scope.settingsAtlas = {\r
28                 adjustSizes: true,\r
29                 gravity: 0.2\r
30             };\r
31 \r
32             $scope.viewTopo = {\r
33                 box: false,\r
34                 button: false\r
35             };\r
36 \r
37             $scope.view = {\r
38                 slider : true,\r
39                 basic : true,\r
40                 policy: false,\r
41                 tenants : false,\r
42                 l2l3 : false,\r
43                 epg : false,\r
44                 contracts : false,\r
45                 docs : false,\r
46                 groupMenu: false,\r
47                 classifiers: false,\r
48                 actions: false\r
49             };\r
50 \r
51             // TENANTS\r
52             $scope.tenantList = [];\r
53             $scope.selectedTenant = null;\r
54             $scope.tenantDisplayLabel = ['name' , 'id'];\r
55 \r
56             $scope.mandatoryProperties = [];\r
57             $scope.loadTopology = function(type, args) {\r
58                 if ( $scope.selectedTenant  ) {\r
59 \r
60                     $scope.topologyData = { nodes: [], links: [] };\r
61                     $scope.topologyType = type;\r
62 \r
63                     TopoServices.loadTopology(type, function(nodes, links) {\r
64                         $scope.topologyData = { nodes: nodes, links: links };\r
65                         $scope.viewTopo.box = true;\r
66                         $scope.viewTopo.button = type !== 'L2L3' && type !== null ? true : false;\r
67                         $scope.legend = TopoServices.getLegend(type);\r
68                         reloadShowLegend();\r
69                     }, function() {\r
70                         $scope.legend = {};\r
71                         reloadShowLegend();\r
72                     }, args);\r
73 \r
74                 }\r
75             };\r
76 \r
77             $scope.toggleExpanded = function(expand, show) {\r
78                 $scope.view[expand] = show ? true : !$scope.view[expand];\r
79                 for ( var property in $scope.view ) {\r
80                     $scope.view[property] = expand !== property ? false : $scope.view[expand];\r
81                 }\r
82 \r
83                 $scope.$broadcast('EV_INIT'+expand.toUpperCase());\r
84             };\r
85 \r
86             $scope.topologyCustfunc = function(sigmaIstance, getSlowDownNum, dragListener, resize){\r
87 \r
88                 sigmaIstance.bind('clickStage', function(e){\r
89                   sigmaIstance.killForceAtlas2();\r
90                 });\r
91 \r
92                 // Bind the events:\r
93                 // sigmaIstance.bind('overNode outNode clickNode doubleClickNode rightClickNode', function(e) {\r
94                 //   console.log(e.type, e.data.node.label, e.data.captor);\r
95                 // });\r
96                 // sigmaIstance.bind('overEdge outEdge clickEdge doubleClickEdge rightClickEdge', function(e) {\r
97                 //   console.log(e.type, e.data.edge, e.data.captor);\r
98                 // });\r
99                 // sigmaIstance.bind('clickStage', function(e) {\r
100                 //   console.log(e.type, e.data.captor);\r
101                 // });\r
102                 // sigmaIstance.bind('doubleClickStage rightClickStage', function(e) {\r
103                 //   console.log(e.type, e.data.captor);\r
104                 // });\r
105 \r
106               };\r
107 \r
108             $scope.setTenant = function() {\r
109                 $scope.$broadcast('GBP_TENANT_RELOAD');\r
110                 if($scope.selectedTenant) {\r
111                     $scope.loadTopology($scope.topologyType, { tenantId: $scope.selectedTenant.id });\r
112                 }\r
113             };\r
114 \r
115             $scope.loadTenants = function() {\r
116                 GBPTenantServices.load(\r
117                     function(tenants) {\r
118                         $scope.tenantList = tenants;\r
119                     },\r
120                     function(){\r
121                         //TODO error\r
122                     });\r
123 \r
124                 DesignGbpFactory.setMainClass();\r
125             };\r
126 \r
127             $scope.sendReloadEventFromRoot = function(eventName) {\r
128                 $scope.$broadcast(eventName);\r
129             };\r
130 \r
131             $scope.getDisplayLabelsFromCtrl = function(eventName, val) {\r
132                 $scope.$broadcast(eventName, val);\r
133             };\r
134 \r
135             $scope.validateMandatory = function(newObj, mandatoryProps){\r
136                 var ret = true,\r
137                     notFilledProps = [];\r
138 \r
139                 mandatoryProps.forEach(function(el){\r
140                     if(newObj[el] === '' || newObj[el] === null || newObj[el] === undefined){\r
141                         notFilledProps.push(el);\r
142                         ret = false;\r
143                     }\r
144                 });\r
145 \r
146                 return {'status' : ret, 'notFilledProps' : notFilledProps};\r
147             };\r
148 \r
149             $scope.getDisplayLabel = function(obj, labelArray){\r
150                 var ret = '';\r
151 \r
152                 if((typeof labelArray) === 'string'){\r
153                     ret = obj[labelArray];\r
154                 } else if (angular.isFunction(labelArray)) {\r
155                     ret = labelArray(obj);\r
156                 } else {\r
157                     labelArray.some(function(labelParam) {\r
158                         if(angular.isFunction(labelParam)) {\r
159                             ret = labelParam(obj);\r
160                         } else if(obj.hasOwnProperty(labelParam)) {\r
161                             ret = obj[labelParam];\r
162                         }\r
163                         return ret;\r
164                     });\r
165                 }\r
166 \r
167                 return ret;\r
168             };\r
169 \r
170             $scope.validateForm = function(form) {\r
171                 return form.$valid;\r
172             };\r
173 \r
174             $scope.loadTenants();\r
175 \r
176             $scope.$on('GBP_GLOBAL_TENANT_RELOAD',function(){\r
177                 $scope.loadTenants();\r
178             });\r
179     }]);\r
180 \r
181     gbp.register.controller('topoDataCtrl',['$scope', 'TopoServices',  function($scope, TopoServices){\r
182         $scope.showTable = false;\r
183 \r
184         $scope.getConsProvLabel = function(edge){\r
185             return TopoServices.getConsProvLabel(edge, $scope.topologyData);\r
186         };\r
187 \r
188         $scope.show = function(){\r
189             $scope.showTable = true;\r
190         };\r
191 \r
192         $scope.close = function(){\r
193             $scope.showTable = false;\r
194         };\r
195 \r
196     }]);\r
197 \r
198 \r
199     gbp.register.controller('crudCtrl',['$scope',  function($scope){\r
200         $scope.selectedObj = null;\r
201         $scope.label = '';\r
202 \r
203         $scope.add = function() {\r
204             $scope.selectedObj = null;\r
205             $scope.showForm();\r
206         };\r
207 \r
208         $scope.modify = function() {\r
209             $scope.$emit('PGN_EDIT_ELEM');\r
210         };\r
211 \r
212         $scope.init = function(label) {\r
213             $scope.label = label;\r
214         };\r
215 \r
216         $scope.$on('EV_SET_SEL_CLASS', function(event, selObj){\r
217             $scope.selectedObj = selObj;\r
218         });\r
219     }]);\r
220 \r
221     gbp.register.controller('contractCtrl', ['$scope','GBPContractServices', '$filter', function($scope, GBPContractServices, $filter){\r
222         $scope.list = [];\r
223         $scope.contractView = false;\r
224         $scope.selectedContract = null;\r
225         $scope.newContractObj = GBPContractServices.createObj();\r
226         $scope.displayLabel = 'id';\r
227         $scope.crudLabel = 'Contract list';\r
228 \r
229         var path = null,\r
230             mandatoryProperties = [];\r
231 \r
232         $scope.init = function() {\r
233             if ( $scope.selectedTenant ) {\r
234                 $scope.selectedContract = null;\r
235                 path = GBPContractServices.createPathObj($scope.selectedTenant.id);\r
236                 \r
237                 GBPContractServices.load(path, function(data){\r
238                     $scope.list = data;\r
239                     // $scope.$broadcast('GBP_CONTRACT_RELOAD');\r
240                     $scope.sendReloadEventFromRoot('GBP_CONTRACT_RELOAD');\r
241                 }, function(){\r
242 \r
243                 });\r
244             }\r
245         };\r
246 \r
247         $scope.save = function(){\r
248             var resp = $scope.validateMandatory($scope.newContractObj, mandatoryProperties);\r
249             if(resp.status){\r
250                 path = GBPContractServices.createPathObj($scope.selectedTenant.id, $scope.newContractObj.id);\r
251                 GBPContractServices.send(path, $scope.newContractObj, function(data){\r
252                     $scope.init();\r
253                     $scope.contractView = false;\r
254                     $scope.reloadNewObj();\r
255                 }, function(){\r
256                     //TODO: error cbk\r
257                 });\r
258             }else{\r
259                 alert($filter('translate')('GBP_MANDATORY_NOT_FILLED')+': '+resp.notFilledProps.join(', '));\r
260             }\r
261         };\r
262 \r
263         $scope.delete = function() {\r
264             if ( $scope.selectedContract ) {\r
265                 path = GBPContractServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id);\r
266                 GBPContractServices.delete(path, function(data){\r
267                     $scope.init();\r
268                     $scope.selectedContract = null;\r
269                 }, function(){\r
270                     //TODO: error cbk\r
271                 });\r
272             }\r
273         };\r
274 \r
275         $scope.reloadNewObj = function() {\r
276             $scope.newContractObj = GBPContractServices.createObj();\r
277         };\r
278 \r
279         $scope.reload = function(selectedObj) {\r
280             $scope.selectedContract = selectedObj;\r
281             if($scope.contractView) {\r
282                 angular.copy(selectedObj, $scope.newContractObj);\r
283             }\r
284             $scope.sendReloadEventFromRoot('GBP_CONTRACT_RELOAD');\r
285         };\r
286 \r
287         $scope.showForm = function() {\r
288             $scope.reloadNewObj();\r
289             $scope.contractView = true;\r
290             $scope.selectedContract = null;\r
291         };\r
292 \r
293         $scope.close = function(){\r
294             $scope.contractView = false;\r
295         };\r
296 \r
297         $scope.$on('PGN_EDIT_ELEM', function(event){\r
298             if(!event.defaultPrevented) {\r
299                 if ( $scope.selectedContract ) {\r
300                     $scope.contractView = true;\r
301                     angular.copy($scope.selectedContract, $scope.newContractObj);\r
302                 }\r
303                 event.defaultPrevented = true;\r
304             }\r
305         });\r
306 \r
307         $scope.$on('GBP_TENANT_RELOAD',function(event){\r
308             $scope.init();\r
309         });\r
310 \r
311         $scope.$on('GBP_CONTRACTS_LABEL', function(event, obj){\r
312             obj.labels = $scope.displayLabel;\r
313         });\r
314     }]);\r
315 \r
316     gbp.register.controller('clauseCtrl', ['$scope','GBPClauseServices', 'GBPSubjectServices', \r
317         function($scope, GBPClauseServices, GBPSubjectServices){\r
318         $scope.list = [];\r
319         $scope.selectedClause = null;\r
320         $scope.newClauseObj = GBPClauseServices.createObj();\r
321         $scope.view = {\r
322             clause: false,\r
323             edit: false\r
324         };\r
325         $scope.displayLabel = 'name';\r
326         $scope.crudLabel = 'Clause list';\r
327 \r
328         $scope.subjects = {'options' : [], 'labels' : null};\r
329         $scope.getDisplayLabelsFromCtrl('GBP_SUBJECTS_LABEL', $scope.subjects);\r
330 \r
331         var path = null;\r
332 \r
333         //move to separate ctrl \/\r
334         $scope.addNewElem = function(templateObj) {\r
335             if($scope.newClauseObj && $scope.newClauseObj['subject-refs']) {\r
336                 var objToPush = templateObj || "";\r
337                 $scope.newClauseObj['subject-refs'].push(objToPush);\r
338             }\r
339         };\r
340 \r
341         $scope.deleteElemAt = function(index) {\r
342             if($scope.newClauseObj && $scope.newClauseObj['subject-refs']) {\r
343                 $scope.newClauseObj['subject-refs'].splice(index, 1);\r
344             }\r
345         };\r
346 \r
347         $scope.updateAt = function(index, value) {\r
348             if($scope.newClauseObj && $scope.newClauseObj['subject-refs'] && $scope.newClauseObj['subject-refs'].length >= index) {\r
349                 $scope.newClauseObj['subject-refs'][index] = value;\r
350             }\r
351         };\r
352         //move to separate ctrl /\\r
353 \r
354         var loadSubjects = function() {\r
355             $scope.getDisplayLabelsFromCtrl('GBP_SUBJECTS_LABEL', $scope.subjects);\r
356 \r
357             GBPSubjectServices.load(path, function(data){\r
358                 $scope.subjects.options = data;\r
359             }, function(){\r
360                 //TODO: error cbk\r
361             });\r
362         };\r
363 \r
364         $scope.init = function() {\r
365             if ( $scope.selectedContract ) {\r
366                 path = GBPClauseServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id);\r
367                 \r
368                 GBPClauseServices.load(path, function(data){\r
369                     $scope.list = data;\r
370                 }, function(){\r
371                     //TODO: error cbk\r
372                 });\r
373             }\r
374         };\r
375 \r
376         $scope.save = function(){\r
377             if($scope.validateForm($scope.clauseForm)){\r
378                 path = GBPClauseServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.newClauseObj.name);\r
379                 GBPClauseServices.send(path, $scope.newClauseObj, function(data){\r
380                     $scope.init();\r
381                     $scope.view.clause = false;\r
382                     $scope.reloadNewObj();\r
383                 }, function(){\r
384                     //TODO: error cbk\r
385                 });\r
386             }\r
387         };\r
388 \r
389         $scope.delete = function() {\r
390             if ( $scope.selectedClause ) {\r
391                 path = GBPClauseServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedClause.name);\r
392                 GBPClauseServices.delete(path, function(data){\r
393                     $scope.init();\r
394                     $scope.selectedClause = null;\r
395                 }, function(){\r
396                     //TODO: error cbk\r
397                 });\r
398             }\r
399         };\r
400 \r
401         $scope.reloadNewObj = function() {\r
402             $scope.newClauseObj = GBPClauseServices.createObj();\r
403         };\r
404 \r
405         $scope.reload = function(selectedObj) {\r
406             $scope.selectedClause = selectedObj;\r
407             if($scope.view.clause) {\r
408                 angular.copy(selectedObj, $scope.newClauseObj);\r
409             }\r
410         };\r
411 \r
412         $scope.showForm = function() {\r
413             $scope.reloadNewObj();\r
414             $scope.view.clause = true;\r
415             $scope.view.edit = false;\r
416             $scope.selectedClause = null;\r
417         };\r
418 \r
419         $scope.close = function(){\r
420             $scope.view.clause = false;\r
421             $scope.view.edit = false;\r
422         };\r
423 \r
424         $scope.$on('PGN_EDIT_ELEM', function(event){\r
425             if (!event.defaultPrevented) {\r
426                 if ( $scope.selectedClause ) {\r
427                     $scope.view.clause = true;\r
428                     $scope.view.edit = true;\r
429                     angular.copy($scope.selectedClause, $scope.newClauseObj);\r
430                 }\r
431                 event.defaultPrevented = true;\r
432             }\r
433         });\r
434 \r
435         $scope.$on('GBP_CONTRACT_RELOAD',function(){\r
436             $scope.init();\r
437         });\r
438 \r
439         $scope.$on('GBP_SUBJECT_RELOAD',function(){\r
440             loadSubjects();\r
441         });\r
442     }]);\r
443 \r
444     gbp.register.controller('subjectCtrl', ['$scope','GBPSubjectServices', '$filter', function($scope, GBPSubjectServices, $filter){\r
445         $scope.list = [];\r
446         $scope.selectedSubject = null;\r
447         $scope.newSubjectObj = GBPSubjectServices.createObj();\r
448         $scope.displayLabel = 'name';\r
449         $scope.view = {\r
450             subject : false,\r
451             edit : false\r
452         };\r
453         $scope.crudLabel = 'Subject list';\r
454 \r
455 \r
456         var path = null,\r
457             mandatoryProperties = ['order'];\r
458 \r
459         $scope.init = function() {\r
460             if ( $scope.selectedContract ) {\r
461                 $scope.selectedSubject = null;\r
462                 path = GBPSubjectServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id);\r
463                 \r
464                 GBPSubjectServices.load(path, function(data){\r
465                     $scope.list = data;\r
466                     $scope.sendReloadEventFromRoot('GBP_SUBJECT_RELOAD');\r
467                 }, function(){\r
468                     //TODO: error cbk\r
469                 });\r
470             }\r
471         };\r
472 \r
473         $scope.save = function(){\r
474             if($scope.validateForm($scope.subjectForm)){\r
475                 path = GBPSubjectServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.newSubjectObj.name);\r
476                 GBPSubjectServices.send(path, $scope.newSubjectObj, function(data){\r
477                     $scope.init();\r
478                     $scope.view.subject = false;\r
479                     $scope.reloadNewObj();\r
480                 }, function(){\r
481                     //TODO: error cbk\r
482                 });\r
483             }\r
484         };\r
485 \r
486         $scope.delete = function() {\r
487             if ( $scope.selectedSubject ) {\r
488                 path = GBPSubjectServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name);\r
489                 GBPSubjectServices.delete(path, function(data){\r
490                     $scope.init();\r
491                     $scope.selectedSubject = null;\r
492                 }, function(){\r
493                     //TODO: error cbk\r
494                 });\r
495             }\r
496         };\r
497 \r
498         $scope.reloadNewObj = function() {\r
499             $scope.newSubjectObj = GBPSubjectServices.createObj();\r
500         };\r
501 \r
502         $scope.reload = function(selectedObj) {\r
503             $scope.selectedSubject = selectedObj;\r
504             if($scope.view.subject) {\r
505                 angular.copy(selectedObj, $scope.newSubjectObj);\r
506             }\r
507             $scope.sendReloadEventFromRoot('GBP_SUBJECT_RELOAD');\r
508         };\r
509 \r
510         $scope.showForm = function() {\r
511             $scope.reloadNewObj();\r
512             $scope.view.subject = true;\r
513             $scope.view.edit = false;\r
514             $scope.selectedSubject = null;\r
515         };\r
516 \r
517         $scope.close = function(){\r
518             $scope.view.subject = false;\r
519             $scope.view.edit = false;\r
520         };\r
521 \r
522         $scope.$on('PGN_EDIT_ELEM', function(event){\r
523             if (!event.defaultPrevented) {\r
524                 if ( $scope.selectedSubject ) {\r
525                     $scope.view.subject = true;\r
526                     $scope.view.edit = true;\r
527                     angular.copy($scope.selectedSubject, $scope.newSubjectObj);\r
528                 }\r
529                 event.defaultPrevented = true;\r
530             }\r
531         });\r
532 \r
533         $scope.$on('GBP_CONTRACT_RELOAD',function(){\r
534             $scope.init();\r
535         });\r
536 \r
537         $scope.$on('GBP_SUBJECTS_LABEL', function(event, obj){\r
538             obj.labels = $scope.displayLabel;\r
539         });\r
540     }]);\r
541 \r
542     gbp.register.controller('ruleCtrl', ['$scope','GBPRuleServices', '$filter', function($scope, GBPRuleServices, $filter){\r
543         $scope.list = [];\r
544         $scope.selectedRule = null;\r
545         $scope.newRuleObj = GBPRuleServices.createObj();\r
546         $scope.displayLabel = 'name';\r
547         $scope.view = {\r
548             rule : false,\r
549             edit : false\r
550         };\r
551         $scope.crudLabel = 'Rule list';\r
552 \r
553         var path = null,\r
554             mandatoryProperties = ['order'];\r
555 \r
556         $scope.init = function() {\r
557             if ( $scope.selectedSubject ) {\r
558                 $scope.selectedRule = null;\r
559                 path = GBPRuleServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name);\r
560                 \r
561                 GBPRuleServices.load(path, function(data){\r
562                     $scope.list = data;\r
563                 }, function(){\r
564                     //TODO: error cbk\r
565                 });\r
566             }\r
567         };\r
568 \r
569         $scope.save = function(){\r
570             if($scope.validateForm($scope.rulesForm)){\r
571                 path = GBPRuleServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.newRuleObj.name);\r
572                 GBPRuleServices.send(path, $scope.newRuleObj, function(data){\r
573                     $scope.init();\r
574                     $scope.view.rule = false;\r
575                     $scope.reloadNewObj();\r
576                 }, function(){\r
577                     //TODO: error cbk\r
578                 });\r
579             }\r
580         };\r
581 \r
582         $scope.delete = function() {\r
583             if ( $scope.selectedRule ) {\r
584                 path = GBPRuleServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name);\r
585                 GBPRuleServices.delete(path, function(data){\r
586                     $scope.init();\r
587                     $scope.selectedRule = null;\r
588                 }, function(){\r
589                     //TODO: error cbk\r
590                 });\r
591             }\r
592         };\r
593 \r
594         $scope.reloadNewObj = function() {\r
595             $scope.newRuleObj = GBPRuleServices.createObj();\r
596         };\r
597 \r
598         $scope.reload = function(selectedObj) {\r
599             $scope.selectedRule = selectedObj;\r
600             if($scope.view.rule) {\r
601                 angular.copy(selectedObj, $scope.newRuleObj);\r
602             }\r
603             $scope.$broadcast('GBP_RULE_RELOAD');\r
604         };\r
605 \r
606         $scope.showForm = function() {\r
607             $scope.reloadNewObj();\r
608             $scope.view.rule = true;\r
609             $scope.view.edit = false;\r
610             $scope.selectedRule = null;\r
611         };\r
612 \r
613         $scope.close = function(){\r
614             $scope.view.rule = false;\r
615             $scope.view.edit = false;\r
616         };\r
617 \r
618         $scope.$on('PGN_EDIT_ELEM', function(event){\r
619             if (!event.defaultPrevented) {\r
620                 if ( $scope.selectedRule ) {\r
621                 $scope.view.rule = true;\r
622                 $scope.view.edit = true;\r
623                     angular.copy($scope.selectedRule, $scope.newRuleObj);\r
624                 }\r
625                 event.defaultPrevented = true;\r
626             }\r
627         });\r
628 \r
629         $scope.$on('GBP_SUBJECT_RELOAD',function(){\r
630             $scope.init();\r
631         });\r
632     }]);\r
633 \r
634     gbp.register.controller('actionRefCtrl', ['$scope','GBPActionRefsServices', 'GBPActionInstanceServices', '$filter', function($scope, GBPActionRefsServices, GBPActionInstanceServices, $filter){\r
635         $scope.list = [];\r
636         $scope.selectedActionRef = null;\r
637         $scope.newActionRefObj = GBPActionRefsServices.createObj();\r
638         $scope.displayLabel = 'name';\r
639         $scope.view = {\r
640             actionRef : false,\r
641             edit : false\r
642         };\r
643         $scope.crudLabel = 'Action ref list';\r
644 \r
645         $scope.actionInstanceNames = {'options' : [], 'labels' : $scope.displayLabel};\r
646 \r
647         var path = null,\r
648             mandatoryProperties = ['order'];\r
649 \r
650         var actionInstanceNamesLoad = function() {\r
651             var actionInstancePath = GBPActionInstanceServices.createPathObj($scope.selectedTenant.id);\r
652             GBPActionInstanceServices.load(actionInstancePath, function(data){\r
653                 $scope.actionInstanceNames.options = data;\r
654             },function(){\r
655                 //TODO: error cbk\r
656             });\r
657         };\r
658 \r
659         $scope.init = function() {\r
660             if ( $scope.selectedRule ) {\r
661                 $scope.selectedActionRef = null;\r
662                 path = GBPActionRefsServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name);\r
663                 \r
664                 GBPActionRefsServices.load(path, function(data){\r
665                     $scope.list = data;\r
666                 }, function(){\r
667                     //TODO: error cbk\r
668                 });\r
669 \r
670                 actionInstanceNamesLoad();\r
671             }\r
672         };\r
673 \r
674         $scope.save = function(){\r
675             if($scope.validateForm($scope.actionRefForm)){\r
676                 path = GBPActionRefsServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name, $scope.newActionRefObj.name);\r
677                 GBPActionRefsServices.send(path, $scope.newActionRefObj, function(data){\r
678                     $scope.init();\r
679                     $scope.view.actionRef = false;\r
680                     $scope.reloadNewObj();\r
681                 }, function(){\r
682                     //TODO: error cbk\r
683                 });\r
684             }\r
685         };\r
686 \r
687         $scope.delete = function() {\r
688             if ( $scope.selectedActionRef ) {\r
689                 path = GBPActionRefsServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name, $scope.selectedActionRef.name);\r
690                 GBPActionRefsServices.delete(path, function(data){\r
691                     $scope.init();\r
692                     $scope.selectedActionRef = null;\r
693                 }, function(){\r
694                     //TODO: error cbk\r
695                 });\r
696             }\r
697         };\r
698 \r
699         $scope.reloadNewObj = function() {\r
700             $scope.newActionRefObj = GBPActionRefsServices.createObj();\r
701         };\r
702 \r
703         $scope.reload = function(selectedObj) {\r
704             $scope.selectedActionRef = selectedObj;\r
705             if($scope.view.actionRef) {\r
706                 angular.copy(selectedObj, $scope.newActionRefObj);\r
707             }\r
708         };\r
709 \r
710         $scope.showForm = function() {\r
711             $scope.reloadNewObj();\r
712             $scope.view.actionRef = true;\r
713             $scope.view.edit = false;\r
714             $scope.selectedActionRef = null;\r
715         };\r
716 \r
717         $scope.close = function(){\r
718             $scope.view.actionRef = false;\r
719             $scope.view.edit = false;\r
720         };\r
721 \r
722         $scope.$on('PGN_EDIT_ELEM', function(event){\r
723             if (!event.defaultPrevented) {\r
724                 if ( $scope.selectedActionRef ) {\r
725                     $scope.view.actionRef = true;\r
726                     $scope.view.edit = true;\r
727                     angular.copy($scope.selectedActionRef, $scope.newActionRefObj);\r
728                 }\r
729                 event.defaultPrevented = true;\r
730             }\r
731         });\r
732 \r
733         $scope.$on('GBP_RULE_RELOAD',function(){\r
734             $scope.init();\r
735         });\r
736 \r
737         $scope.$on('GBP_ACTION_INSTANCE_RELOAD',function(){\r
738             actionInstanceNamesLoad();\r
739         });\r
740     }]);\r
741 \r
742     gbp.register.controller('classifierRefCtrl', ['$scope','GBPClassifierRefsServices', 'GBPClassifierInstanceServices', '$filter', function($scope, GBPClassifierRefsServices, GBPClassifierInstanceServices, $filter){\r
743         $scope.list = [];\r
744         $scope.selectedClassifierRef = null;\r
745         $scope.newClassifierRefObj = GBPClassifierRefsServices.createObj();\r
746         $scope.displayLabel = 'name';\r
747         $scope.view = {\r
748             classifierRef : false,\r
749             edit : false\r
750         };\r
751 \r
752         $scope.instanceNames = {'options' : [], 'labels' : $scope.displayLabel};\r
753 \r
754         $scope.formDirections = ['in', 'out', 'bidirectional'];\r
755         $scope.formConnectionTracking = ['normal', 'reflexive'];\r
756 \r
757         $scope.crudLabel = 'Classifier ref list';\r
758 \r
759         var path = null;\r
760 \r
761         var instanceNamesLoad = function() {\r
762             var classifierInstancePath = GBPClassifierInstanceServices.createPathObj($scope.selectedTenant.id);\r
763             GBPClassifierInstanceServices.load(classifierInstancePath, function(data){\r
764                 $scope.instanceNames.options = data;\r
765             },function(){\r
766                 //TODO: error cbk\r
767             });\r
768         };\r
769 \r
770         $scope.init = function() {\r
771             if ( $scope.selectedRule ) {\r
772                 $scope.selectedClassifierRef = null;\r
773                 path = GBPClassifierRefsServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name);\r
774                 \r
775 \r
776 \r
777                 GBPClassifierRefsServices.load(path, function(data){\r
778                     $scope.list = data;\r
779                 }, function(){\r
780                     //TODO: error cbk\r
781                 });\r
782 \r
783                 instanceNamesLoad();\r
784             }\r
785         };\r
786 \r
787         $scope.save = function(){\r
788             if($scope.validateForm($scope.classifierRefForm)){\r
789                 path = GBPClassifierRefsServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name, $scope.newClassifierRefObj.name);\r
790                 GBPClassifierRefsServices.send(path, $scope.newClassifierRefObj, function(data){\r
791                     $scope.init();\r
792                     $scope.view.classifierRef = false;\r
793                     $scope.reloadNewObj();\r
794                 }, function(){\r
795                     //TODO: error cbk\r
796                 });\r
797             }\r
798         };\r
799 \r
800         $scope.delete = function() {\r
801             if ( $scope.selectedClassifierRef ) {\r
802                 path = GBPClassifierRefsServices.createPathObj($scope.selectedTenant.id, $scope.selectedContract.id, $scope.selectedSubject.name, $scope.selectedRule.name, $scope.selectedClassifierRef.name);\r
803                 GBPClassifierRefsServices.delete(path, function(data){\r
804                     $scope.init();\r
805                     $scope.selectedClassifierRef = null;\r
806                 }, function(){\r
807                     //TODO: error cbk\r
808                 });\r
809             }\r
810         };\r
811 \r
812         $scope.reloadNewObj = function() {\r
813             $scope.newClassifierRefObj = GBPClassifierRefsServices.createObj();\r
814         };\r
815 \r
816         $scope.reload = function(selectedObj) {\r
817             $scope.selectedClassifierRef = selectedObj;\r
818             if($scope.view.classifierRef) {\r
819                 angular.copy(selectedObj, $scope.newClassifierRefObj);\r
820             }\r
821         };\r
822 \r
823         $scope.showForm = function() {\r
824             $scope.reloadNewObj();\r
825             $scope.view.classifierRef = true;\r
826             $scope.view.edit = false;\r
827             $scope.selectedClassifierRef = null;\r
828         };\r
829 \r
830         $scope.close = function(){\r
831             $scope.view.classifierRef = false;\r
832             $scope.view.edit = false;\r
833         };\r
834 \r
835         $scope.$on('PGN_EDIT_ELEM', function(event){\r
836             if (!event.defaultPrevented) {\r
837                 if ( $scope.selectedClassifierRef ) {\r
838                     $scope.view.classifierRef = true;\r
839                     $scope.view.edit = true;\r
840                     angular.copy($scope.selectedClassifierRef, $scope.newClassifierRefObj);\r
841                 }\r
842                 event.defaultPrevented = true;\r
843             }\r
844         });\r
845 \r
846         $scope.$on('GBP_RULE_RELOAD',function(){\r
847             $scope.init();\r
848         });\r
849 \r
850         $scope.$on('GBP_CLASSIFIER_INSTANCE_RELOAD',function(){\r
851             instanceNamesLoad();\r
852         });\r
853     }]);\r
854 \r
855     gbp.register.controller('tenantCtrl', ['$scope', 'GBPTenantServices', '$filter', function($scope, GBPTenantServices, $filter){ \r
856         $scope.list = [];\r
857         $scope.tenantView = false;\r
858         $scope.selectedTenantObj = null;\r
859         $scope.newTenantObj = GBPTenantServices.createObj();\r
860         $scope.displayLabel = ['name' , 'id'];\r
861         $scope.crudLabel = 'Tenants list';\r
862 \r
863         $scope.init = function() {\r
864             GBPTenantServices.load(\r
865                 function(data) {\r
866                     $scope.list = data;\r
867                     $scope.newTenantObj = GBPTenantServices.createObj();\r
868                     $scope.selectedTenantObj = null;\r
869                 },\r
870                 function(){\r
871                     //TODO error\r
872                 });\r
873         };\r
874 \r
875         $scope.save = function(){\r
876             if($scope.validateForm($scope.tenantForm)){\r
877                 path = GBPTenantServices.createPathObj($scope.newTenantObj.id);\r
878                 GBPTenantServices.send(path, $scope.newTenantObj, function(data){\r
879                     $scope.init();\r
880                     $scope.tenantView = false;\r
881                     $scope.$emit('GBP_GLOBAL_TENANT_RELOAD');\r
882                 }, function(){\r
883                     //TODO: error cbk\r
884                 });\r
885             }\r
886         };\r
887 \r
888          $scope.delete = function() {\r
889             if($scope.selectedTenantObj) {\r
890                 path = GBPTenantServices.createPathObj($scope.selectedTenantObj.id);\r
891 \r
892                 GBPTenantServices.delete(path, function(data){\r
893                     $scope.init();\r
894                     $scope.tenantView = false;\r
895                     $scope.$emit('GBP_GLOBAL_TENANT_RELOAD');\r
896                 }, function(){\r
897                     //TODO: error cbk\r
898                 });\r
899             }\r
900         };\r
901 \r
902         $scope.reload = function(selectedObj) {\r
903             $scope.selectedTenantObj = selectedObj;\r
904             if ($scope.tenantView) {\r
905                 angular.copy(selectedObj, $scope.newTenantObj);\r
906             }\r
907         };\r
908 \r
909         $scope.showForm = function() {\r
910             $scope.newTenantObj = GBPTenantServices.createObj();\r
911             $scope.selectedTenantObj = null;\r
912             $scope.tenantView = true;\r
913         };\r
914 \r
915         $scope.close = function(){\r
916             $scope.tenantView = false;\r
917         };\r
918 \r
919        $scope.$on('PGN_EDIT_ELEM', function(event){\r
920             if (!event.defaultPrevented) {\r
921                 if ( $scope.selectedTenantObj ) {\r
922                     $scope.tenantView = true;\r
923                     angular.copy($scope.selectedTenantObj, $scope.newTenantObj);\r
924                 }\r
925                 event.defaultPrevented = true;\r
926             }\r
927         });\r
928 \r
929         // $scope.$on('GBP_TENANT_RELOAD',function(){\r
930         //     $scope.init();\r
931         // });\r
932     }]);\r
933 \r
934     gbp.register.controller('epgCtrl',['$scope', 'GBPEpgServices', 'GBPContractServices', '$filter',\r
935         function($scope, GBPEpgServices, GBPContractServices, $filter){\r
936         $scope.selectedEpg = null;\r
937         $scope.newEpgObj = GBPEpgServices.createObj();\r
938         $scope.epgView = false;\r
939         $scope.displayLabel = ['name', 'id'];\r
940         $scope.crudLabel = 'Group list';\r
941 \r
942         $scope.igpOpts = ['allow', 'require-contract'];\r
943 \r
944         $scope.contracts = {'options' : [], 'labels' : null};\r
945         $scope.getDisplayLabelsFromCtrl('GBP_CONTRACTS_LABEL', $scope.contracts);\r
946 \r
947         $scope.list = [];\r
948 \r
949         var loadContracts = function() {\r
950             GBPContractServices.load(path, function(data){\r
951                 $scope.contracts.options = data;\r
952             }, function(){\r
953                 //TODO: error cbk\r
954             });\r
955         };\r
956 \r
957         var mandatoryProperties = ['name'];\r
958 \r
959         $scope.init = function() {\r
960             if ($scope.selectedTenant) {\r
961                 path = GBPEpgServices.createPathObj($scope.selectedTenant.id);\r
962                 \r
963                 GBPEpgServices.load(path, function(data){\r
964                     $scope.list = data;\r
965                     // $scope.$broadcast('GBP_EPG_RELOAD');\r
966                     $scope.sendReloadEventFromRoot('GBP_EPG_RELOAD');\r
967                 }, function(){\r
968                     //TODO: error cbk\r
969                 });\r
970 \r
971                 loadContracts();\r
972             }\r
973         };\r
974 \r
975         $scope.save = function(){\r
976             if($scope.validateForm($scope.epgForm)){\r
977                 path = GBPEpgServices.createPathObj($scope.selectedTenant.id, $scope.newEpgObj.id);\r
978                 GBPEpgServices.send(path, $scope.newEpgObj, function(data){\r
979                     $scope.init();\r
980                     $scope.epgView = false;\r
981                     $scope.reloadNewObj();\r
982                 }, function(){\r
983                     //TODO: error cbk\r
984                 });\r
985             }\r
986         };\r
987 \r
988         $scope.delete = function() {\r
989             if($scope.selectedTenant && $scope.selectedEpg) {\r
990                 path = GBPEpgServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id);\r
991                 GBPEpgServices.delete(path, function(data){\r
992                     $scope.init();\r
993                 }, function(){\r
994                     //TODO: error cbk\r
995                 });\r
996             }\r
997         };\r
998 \r
999         $scope.showForm = function() {\r
1000             $scope.epgView = true;\r
1001             $scope.reloadNewObj();\r
1002             $scope.selectedEpg = null;\r
1003         };\r
1004 \r
1005         $scope.reloadNewObj = function() {\r
1006             $scope.newEpgObj = GBPEpgServices.createObj();\r
1007         };\r
1008 \r
1009         $scope.reload = function(selectedObj) {\r
1010             $scope.selectedEpg = selectedObj;\r
1011             if($scope.epgView) {\r
1012                 angular.copy(selectedObj, $scope.newEpgObj);\r
1013             }\r
1014             $scope.sendReloadEventFromRoot('GBP_EPG_RELOAD');\r
1015         };\r
1016 \r
1017         $scope.close = function(){\r
1018             $scope.epgView = false;\r
1019         };\r
1020         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1021             if (!event.defaultPrevented) {\r
1022                 if ( $scope.selectedEpg ) {\r
1023                     $scope.epgView = true;\r
1024                     angular.copy($scope.selectedEpg, $scope.newEpgObj);\r
1025                 }\r
1026                 event.defaultPrevented = true;\r
1027             }\r
1028         });\r
1029 \r
1030         $scope.$on('GBP_TENANT_RELOAD',function(){\r
1031             $scope.init();\r
1032         });\r
1033 \r
1034         $scope.$on('GBP_CONTRACT_RELOAD',function(){\r
1035             loadContracts();\r
1036         });\r
1037 \r
1038         $scope.$on('GBP_EPG_LABEL', function(event, obj){\r
1039             obj.labels = $scope.displayLabel;\r
1040         });\r
1041     }]);\r
1042 \r
1043     gbp.register.controller('cnsCtrl',['$scope', 'GBPConNamedSelServices', function($scope, GBPConNamedSelServices){\r
1044         $scope.list = [];\r
1045         $scope.selectedCNS = null;\r
1046         $scope.newCNSObj = GBPConNamedSelServices.createObj();\r
1047         $scope.view = {\r
1048             cns: false,\r
1049             edit: false\r
1050         };\r
1051         $scope.displayLabel = 'name';\r
1052         $scope.crudLabel = 'Consumer named selectors list';\r
1053 \r
1054         //move to separate ctrl \/\r
1055         $scope.addNewElem = function(templateObj) {\r
1056             if($scope.newCNSObj && $scope.newCNSObj.contract) {\r
1057                 var objToPush = templateObj || "";\r
1058                 $scope.newCNSObj.contract.push(objToPush);\r
1059             }\r
1060         };\r
1061 \r
1062         $scope.deleteElemAt = function(index) {\r
1063             if($scope.newCNSObj && $scope.newCNSObj.contract) {\r
1064                 $scope.newCNSObj.contract.splice(index, 1);\r
1065             }\r
1066         };\r
1067 \r
1068         $scope.updateAt = function(index, value) {\r
1069             if($scope.newCNSObj && $scope.newCNSObj.contract && $scope.newCNSObj.contract.length >= index) {\r
1070                 $scope.newCNSObj.contract[index] = value;\r
1071             }\r
1072         };\r
1073         //move to separate ctrl /\\r
1074 \r
1075         $scope.init = function() {\r
1076             if ($scope.selectedTenant && $scope.selectedEpg) {\r
1077                 path = GBPConNamedSelServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id);\r
1078 \r
1079                 GBPConNamedSelServices.load(path, function(data){\r
1080                     $scope.list = data;\r
1081                 }, function(){\r
1082                     //TODO: error cbk\r
1083                 });\r
1084             }\r
1085         };\r
1086 \r
1087         $scope.save = function(){\r
1088             if($scope.validateForm($scope.cnsForm)){\r
1089                 path = GBPConNamedSelServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id, $scope.newCNSObj.name);\r
1090                 GBPConNamedSelServices.send(path, $scope.newCNSObj, function(data){\r
1091                     $scope.init();\r
1092                     $scope.view.cns = false;\r
1093 \r
1094                     $scope.reloadNewObj();\r
1095                 }, function(){\r
1096                     //TODO: error cbk\r
1097                 });\r
1098             }\r
1099         };\r
1100 \r
1101         $scope.delete = function() {\r
1102             if($scope.selectedTenant && $scope.selectedEpg && $scope.selectedCNS) {\r
1103                 path = GBPConNamedSelServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id, $scope.selectedCNS.name);\r
1104                 GBPConNamedSelServices.delete(path, function(data){\r
1105                     $scope.init();\r
1106                 }, function(){\r
1107                     //TODO: error cbk\r
1108                 });\r
1109             }\r
1110         };\r
1111 \r
1112         $scope.showForm = function() {\r
1113             $scope.reloadNewObj();\r
1114             $scope.selectedCNS = null;\r
1115             $scope.view.cns = true;\r
1116             $scope.view.edit = false;\r
1117         };\r
1118 \r
1119         $scope.reloadNewObj = function() {\r
1120             $scope.newCNSObj = GBPConNamedSelServices.createObj();\r
1121         };\r
1122 \r
1123         $scope.reload = function(selectedObj) {\r
1124             $scope.selectedCNS = selectedObj;\r
1125             if($scope.view.cns) {\r
1126                 angular.copy(selectedObj, $scope.newCNSObj);\r
1127             }\r
1128         };\r
1129 \r
1130         $scope.close = function(){\r
1131             $scope.view.cns = false;\r
1132             $scope.view.edit = false;\r
1133         };\r
1134 \r
1135         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1136             if (!event.defaultPrevented) {\r
1137                 if ( $scope.selectedEpg ) {\r
1138                     $scope.view.cns = true;\r
1139                     $scope.view.edit = true;\r
1140                     angular.copy($scope.selectedCNS, $scope.newCNSObj);\r
1141                 }\r
1142                 event.defaultPrevented = true;\r
1143             }\r
1144         });\r
1145 \r
1146         $scope.$on('GBP_EPG_RELOAD',function(){\r
1147             $scope.init();\r
1148         });\r
1149     }]);\r
1150 \r
1151     gbp.register.controller('pnsCtrl',['$scope', 'GBPProNamedSelServices', function($scope, GBPProNamedSelServices){\r
1152         $scope.list = [];\r
1153         $scope.selectedPNS = null;\r
1154         $scope.newPNSObj = GBPProNamedSelServices.createObj();\r
1155         $scope.displayLabel = 'name';\r
1156         $scope.crudLabel = 'Provider named selectors list';\r
1157         $scope.view = {\r
1158             pns: false,\r
1159             edit: false\r
1160         };\r
1161 \r
1162         //move to separate ctrl \/\r
1163         $scope.addNewElem = function(templateObj) {\r
1164             if($scope.newPNSObj && $scope.newPNSObj.contract) {\r
1165                 var objToPush = templateObj || "";\r
1166                 $scope.newPNSObj.contract.push(objToPush);\r
1167             }\r
1168         };\r
1169 \r
1170         $scope.deleteElemAt = function(index) {\r
1171             if($scope.newPNSObj && $scope.newPNSObj.contract) {\r
1172                 $scope.newPNSObj.contract.splice(index, 1);\r
1173             }\r
1174         };\r
1175 \r
1176         $scope.updateAt = function(index, value) {\r
1177             if($scope.newPNSObj && $scope.newPNSObj.contract && $scope.newPNSObj.contract.length >= index) {\r
1178                 $scope.newPNSObj.contract[index] = value;\r
1179             }\r
1180         };\r
1181         //move to separate ctrl /\\r
1182 \r
1183         $scope.init = function() {\r
1184             if ($scope.selectedTenant && $scope.selectedEpg) {\r
1185                 path = GBPProNamedSelServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id);\r
1186                 \r
1187                 GBPProNamedSelServices.load(path, function(data){\r
1188                     $scope.list = data;\r
1189                 }, function(){\r
1190                     //TODO: error cbk\r
1191                 });\r
1192             }\r
1193         };\r
1194 \r
1195         $scope.save = function(){\r
1196             if($scope.validateForm($scope.pnsForm)){\r
1197                 path = GBPProNamedSelServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id, $scope.newPNSObj.name);\r
1198                 GBPProNamedSelServices.send(path, $scope.newPNSObj, function(data){\r
1199                     $scope.init();\r
1200                     $scope.view.pns = false;\r
1201                     $scope.reloadNewObj();\r
1202                 }, function(){\r
1203                     //TODO: error cbk\r
1204                 });\r
1205             }\r
1206         };\r
1207 \r
1208         $scope.delete = function() {\r
1209             if($scope.selectedTenant && $scope.selectedEpg && $scope.selectedPNS) {\r
1210                 path = GBPProNamedSelServices.createPathObj($scope.selectedTenant.id, $scope.selectedEpg.id, $scope.selectedPNS.name);\r
1211                 GBPProNamedSelServices.delete(path, function(data){\r
1212                     $scope.init();\r
1213                 }, function(){\r
1214                     //TODO: error cbk\r
1215                 });\r
1216             }\r
1217         };\r
1218 \r
1219         $scope.showForm = function() {\r
1220             $scope.reloadNewObj();\r
1221             $scope.view.pns = true;\r
1222             $scope.view.edit = false;\r
1223             $scope.selectedPNS = null;\r
1224         };\r
1225 \r
1226         $scope.reloadNewObj = function() {\r
1227             $scope.newPNSObj = GBPProNamedSelServices.createObj();\r
1228         };\r
1229 \r
1230         $scope.reload = function(selectedObj) {\r
1231             $scope.selectedPNS = selectedObj;\r
1232             if($scope.view.pns) {\r
1233                 angular.copy(selectedObj, $scope.newPNSObj);\r
1234             }\r
1235         };\r
1236 \r
1237         $scope.close = function(){\r
1238             $scope.view.pns = false;\r
1239             $scope.view.edit = false;\r
1240         };\r
1241         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1242             if (!event.defaultPrevented) {\r
1243                 if ( $scope.selectedEpg ) {\r
1244                     $scope.view.pns = true;\r
1245                     $scope.view.edit = true;\r
1246                     angular.copy($scope.selectedPNS, $scope.newPNSObj);\r
1247                 }\r
1248                 event.defaultPrevented = true;\r
1249             }\r
1250         });\r
1251 \r
1252         $scope.$on('GBP_EPG_RELOAD',function(){\r
1253             $scope.init();\r
1254         });\r
1255     }]);\r
1256 \r
1257     gbp.register.controller('l2FloodCtrl', ['$scope', 'GBPL2FloodDomainServices', 'GBPL2BridgeDomainServices', '$filter', function($scope, GBPL2FloodDomainServices, GBPL2BridgeDomainServices, $filter){ \r
1258         $scope.list = [];\r
1259         $scope.l2FloodView = false;\r
1260         $scope.selectedL2Flood = null;\r
1261         $scope.newL2FloodObj = GBPL2FloodDomainServices.createObj();\r
1262         $scope.displayLabel = ['name', 'id'];\r
1263         $scope.crudLabel = 'L2 Flood Domain list';\r
1264 \r
1265         $scope.l2bridge = {'options' : [], 'labels' : null};\r
1266         $scope.getDisplayLabelsFromCtrl('GBP_L2BRIDGE_LABEL', $scope.l2bridge);\r
1267 \r
1268         var path = null;\r
1269 \r
1270         var loadL2BridgeList = function() {\r
1271             GBPL2BridgeDomainServices.load(GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id), function(data){\r
1272                 $scope.l2bridge.options = data;\r
1273             }, function(){\r
1274 \r
1275             });\r
1276         };\r
1277 \r
1278         $scope.init = function() {\r
1279             if ( $scope.selectedTenant ) {\r
1280                 path = GBPL2FloodDomainServices.createPathObj($scope.selectedTenant.id);\r
1281                 \r
1282                 GBPL2FloodDomainServices.load(path, function(data){\r
1283                     $scope.list = data;\r
1284                     // clear objects\r
1285                     $scope.newL2FloodObj = GBPL2FloodDomainServices.createObj();\r
1286                     $scope.selectedL2Flood = null;\r
1287                 }, function(){\r
1288 \r
1289                 });\r
1290 \r
1291                 loadL2BridgeList();\r
1292             }\r
1293         };\r
1294 \r
1295         $scope.save = function(){\r
1296             if($scope.validateForm($scope.l2FloodForm)){\r
1297                 path = GBPL2FloodDomainServices.createPathObj($scope.selectedTenant.id, $scope.newL2FloodObj.id);\r
1298                 GBPL2FloodDomainServices.send(path, $scope.newL2FloodObj, function(data){\r
1299                     $scope.init();\r
1300                     $scope.l2FloodView = false;\r
1301                     $scope.sendReloadEventFromRoot('GBP_L2FLOOD_RELOAD');\r
1302                 }, function(){\r
1303                     //TODO: error cbk\r
1304                 });\r
1305             }\r
1306         };\r
1307 \r
1308         $scope.delete = function() {\r
1309             if($scope.selectedTenant && $scope.selectedL2Flood) {\r
1310                 path = GBPL2FloodDomainServices.createPathObj($scope.selectedTenant.id, $scope.selectedL2Flood.id);\r
1311                 GBPL2FloodDomainServices.delete(path, function(data){\r
1312                     $scope.init();\r
1313                     $scope.l2FloodView = false;\r
1314                     $scope.sendReloadEventFromRoot('GBP_L2FLOOD_RELOAD');\r
1315                 }, function(){\r
1316                     //TODO: error cbk\r
1317                 });\r
1318             }\r
1319         };\r
1320 \r
1321         $scope.reload = function(selectedObj) {\r
1322             $scope.selectedL2Flood = selectedObj;\r
1323             if ($scope.l2FloodView) {\r
1324                 angular.copy(selectedObj, $scope.newL2FloodObj);\r
1325             }\r
1326             $scope.sendReloadEventFromRoot('GBP_L2FLOOD_RELOAD');\r
1327         };\r
1328 \r
1329         $scope.showForm = function() {\r
1330             $scope.newL2FloodObj = GBPL2FloodDomainServices.createObj();\r
1331             $scope.selectedL2Flood = null;\r
1332             $scope.l2FloodView = true;\r
1333         };\r
1334 \r
1335         $scope.close = function(){\r
1336             $scope.l2FloodView = false;\r
1337         };\r
1338 \r
1339         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1340             if (!event.defaultPrevented) {\r
1341                 if ( $scope.selectedL2Flood ) {\r
1342                     $scope.l2FloodView = true;\r
1343                     angular.copy($scope.selectedL2Flood, $scope.newL2FloodObj);\r
1344                 }\r
1345                 event.defaultPrevented = true;\r
1346             }\r
1347         });\r
1348 \r
1349         $scope.$on('GBP_TENANT_RELOAD',function(){\r
1350             $scope.init();\r
1351         });\r
1352 \r
1353         $scope.$on('GBP_L2BRIDGE_RELOAD',function(){\r
1354             loadL2BridgeList();\r
1355         });\r
1356 \r
1357         $scope.$on('GBP_L2FLOOD_LABEL', function(event, obj){\r
1358             obj.labels = $scope.displayLabel;\r
1359         });\r
1360     }]);\r
1361 \r
1362     gbp.register.controller('l2BridgeCtrl', ['$scope', 'GBPL2BridgeDomainServices', 'GBPL3ContextServices', '$filter', function($scope, GBPL2BridgeDomainServices, GBPL3ContextServices, $filter){ \r
1363         $scope.list = [];\r
1364         $scope.l2BridgeView = false;\r
1365         $scope.selectedL2Bridge = null;\r
1366         $scope.newL2BridgeObj = GBPL2BridgeDomainServices.createObj();\r
1367         $scope.displayLabel = ['name', 'id'];\r
1368         $scope.crudLabel = 'L2 Bridge Domain list';\r
1369 \r
1370         $scope.l3context = {'options' : [], 'labels' : null};\r
1371         $scope.getDisplayLabelsFromCtrl('GBP_L3CONTEXT_LABEL', $scope.l3context);\r
1372 \r
1373         var path = null;\r
1374 \r
1375         var loadL3ContextList = function() {\r
1376             GBPL3ContextServices.load(GBPL3ContextServices.createPathObj($scope.selectedTenant.id), function(data){\r
1377                 $scope.l3context.options = data;\r
1378                 //$scope.$broadcast('GBP_L2BRIDGE_RELOAD');\r
1379             }, function(){\r
1380 \r
1381             });\r
1382         };\r
1383 \r
1384         $scope.init = function() {\r
1385             if ( $scope.selectedTenant ) {\r
1386                 path = GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id);\r
1387                 \r
1388                 GBPL2BridgeDomainServices.load(path, function(data){\r
1389                     $scope.list = data;\r
1390                     $scope.newL2BridgeObj = GBPL2BridgeDomainServices.createObj();\r
1391                     $scope.selectedL2Bridge = null;\r
1392                     // $scope.$broadcast('GBP_L2BRIDGE_RELOAD');\r
1393                 }, function(){\r
1394 \r
1395                 });\r
1396 \r
1397                 loadL3ContextList();\r
1398             }\r
1399         };\r
1400 \r
1401 \r
1402 \r
1403         $scope.save = function(){\r
1404             if($scope.validateForm($scope.l2BridgeForm)){\r
1405                 path = GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id, $scope.newL2BridgeObj.id);\r
1406                 GBPL2BridgeDomainServices.send(path, $scope.newL2BridgeObj, function(data){\r
1407                     $scope.init();\r
1408                     $scope.l2BridgeView = false;\r
1409                     $scope.sendReloadEventFromRoot('GBP_L2BRIDGE_RELOAD');\r
1410                 }, function(){\r
1411                     //TODO: error cbk\r
1412                 });\r
1413             }\r
1414         };\r
1415 \r
1416         $scope.delete = function() {\r
1417             if($scope.selectedTenant && $scope.selectedL2Bridge) {\r
1418                 path = GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id, $scope.selectedL2Bridge.id);\r
1419                 GBPL2BridgeDomainServices.delete(path, function(data){\r
1420                     $scope.init();\r
1421                     $scope.l2BridgeView = false;\r
1422                     $scope.sendReloadEventFromRoot('GBP_L2BRIDGE_RELOAD');\r
1423                 }, function(){\r
1424                     //TODO: error cbk\r
1425                 });\r
1426             }\r
1427         };\r
1428 \r
1429         $scope.reload = function(selectedObj) {\r
1430             $scope.selectedL2Bridge = selectedObj;\r
1431             if ($scope.l2BridgeView) {\r
1432                 angular.copy(selectedObj, $scope.newL2BridgeObj);\r
1433             }\r
1434             $scope.sendReloadEventFromRoot('GBP_L2BRIDGE_RELOAD');\r
1435         };\r
1436 \r
1437         $scope.showForm = function() {\r
1438             $scope.newL2BridgeObj = GBPL2BridgeDomainServices.createObj();\r
1439             $scope.selectedL2Bridge = null;\r
1440             $scope.l2BridgeView = true;\r
1441         };\r
1442 \r
1443         $scope.close = function(){\r
1444             $scope.l2BridgeView = false;\r
1445         };\r
1446 \r
1447         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1448             if (!event.defaultPrevented) {\r
1449                 if ( $scope.selectedL2Bridge ) {\r
1450                     $scope.l2BridgeView = true;\r
1451                     angular.copy($scope.selectedL2Bridge, $scope.newL2BridgeObj);\r
1452                 }\r
1453                 event.defaultPrevented = true;\r
1454             }\r
1455         });\r
1456 \r
1457         $scope.$on('GBP_TENANT_RELOAD',function(){\r
1458             $scope.init();\r
1459         });\r
1460 \r
1461         $scope.$on('GBP_L3CONTEXT_RELOAD',function(){\r
1462             loadL3ContextList();\r
1463         });\r
1464 \r
1465         $scope.$on('GBP_L2BRIDGE_LABEL', function(event, obj){\r
1466             obj.labels = $scope.displayLabel;\r
1467         });\r
1468     }]);\r
1469 \r
1470     gbp.register.controller('l3ContextCtrl', ['$scope', 'GBPL3ContextServices', '$filter', function($scope, GBPL3ContextServices, $filter){ //GBPContractServices\r
1471         $scope.list = [];\r
1472         $scope.l3ContextView = false;\r
1473         $scope.selectedL3Context = null;\r
1474         $scope.newL3ContextObj = GBPL3ContextServices.createObj();\r
1475         $scope.displayLabel = ['name', 'id'];\r
1476         $scope.crudLabel = 'L3 Context list';\r
1477 \r
1478         var path = null;\r
1479 \r
1480         $scope.init = function() {\r
1481             if ( $scope.selectedTenant ) {\r
1482                 path = GBPL3ContextServices.createPathObj($scope.selectedTenant.id);\r
1483                 \r
1484                 GBPL3ContextServices.load(path, function(data){\r
1485                     $scope.list = data;\r
1486                     $scope.newL3ContextObj = GBPL3ContextServices.createObj();\r
1487                     $scope.selectedL3Context = null;\r
1488                 }, function(){\r
1489 \r
1490                 });\r
1491             }\r
1492         };\r
1493 \r
1494         $scope.save = function(){\r
1495              if($scope.validateForm($scope.l3ContextForm)){\r
1496                 path = GBPL3ContextServices.createPathObj($scope.selectedTenant.id, $scope.newL3ContextObj.id);\r
1497                 GBPL3ContextServices.send(path, $scope.newL3ContextObj, function(data){\r
1498                     $scope.init();\r
1499                     $scope.l3ContextView = false;\r
1500                     $scope.sendReloadEventFromRoot('GBP_L3CONTEXT_RELOAD');\r
1501                 }, function(){\r
1502                     //TODO: error cbk\r
1503                 });\r
1504             }\r
1505         };\r
1506 \r
1507         $scope.delete = function() {\r
1508             if($scope.selectedTenant && $scope.selectedL3Context) {\r
1509                 path = GBPL3ContextServices.createPathObj($scope.selectedTenant.id, $scope.selectedL3Context.id);\r
1510                 GBPL3ContextServices.delete(path, function(data){\r
1511                     $scope.init();\r
1512                     $scope.l3ContextView = false;\r
1513                     $scope.sendReloadEventFromRoot('GBP_L3CONTEXT_RELOAD');\r
1514                 }, function(){\r
1515                     //TODO: error cbk\r
1516                 });\r
1517             }\r
1518         };\r
1519 \r
1520         $scope.reload = function(selectedObj) {\r
1521             $scope.selectedL3Context = selectedObj;\r
1522             if($scope.l3ContextView) {\r
1523                 angular.copy(selectedObj, $scope.newL3ContextObj);\r
1524             }\r
1525             $scope.sendReloadEventFromRoot('GBP_L3CONTEXT_RELOAD');\r
1526         };\r
1527 \r
1528         $scope.showForm = function() {\r
1529             $scope.newL3ContextObj = GBPL3ContextServices.createObj();\r
1530             $scope.selectedL3Context = null;\r
1531             $scope.l3ContextView = true;\r
1532         };\r
1533 \r
1534         $scope.close = function(){\r
1535             $scope.l3ContextView = false;\r
1536         };\r
1537 \r
1538         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1539             if (!event.defaultPrevented) {\r
1540                 if ( $scope.selectedL3Context ) {\r
1541                     $scope.l3ContextView = true;\r
1542                     angular.copy($scope.selectedL3Context, $scope.newL3ContextObj);\r
1543                 }\r
1544                 event.defaultPrevented = true;\r
1545             }\r
1546         });\r
1547 \r
1548         $scope.$on('GBP_TENANT_RELOAD',function(){\r
1549             $scope.init();\r
1550         });\r
1551 \r
1552         $scope.$on('GBP_L3CONTEXT_LABEL', function(event, obj){\r
1553             obj.labels = $scope.displayLabel;\r
1554         });\r
1555     }]);\r
1556 \r
1557     gbp.register.controller('subnetCtrl', ['$scope', 'GBPSubnetServices', 'GBPL2FloodDomainServices', 'GBPL2BridgeDomainServices', 'GBPL3ContextServices', '$filter', function($scope, GBPSubnetServices, GBPL2FloodDomainServices, GBPL2BridgeDomainServices, GBPL3ContextServices, $filter){ \r
1558         $scope.list = [];\r
1559         $scope.subnetView = false;\r
1560         $scope.selectedSubnet = null;\r
1561         $scope.newSubnetObj = GBPSubnetServices.createObj();\r
1562         $scope.displayLabel = ['name', 'id'];\r
1563         $scope.crudLabel = 'Subnet list';\r
1564 \r
1565         $scope.l2L3List = {'options' : [], 'labels' : null};\r
1566         $scope.getDisplayLabelsFromCtrl('GBP_L2FLOOD_LABEL', $scope.l2L3List);\r
1567 \r
1568 \r
1569         var path = null;\r
1570 \r
1571         var loadL2L3List = function() {\r
1572             $scope.l2L3List.options = [];\r
1573 \r
1574             GBPL3ContextServices.load(GBPL3ContextServices.createPathObj($scope.selectedTenant.id), function(l3ContextData){\r
1575                 $scope.l2L3List.options = $scope.l2L3List.options.concat(l3ContextData);\r
1576             }, function(){\r
1577 \r
1578             });\r
1579 \r
1580             GBPL2FloodDomainServices.load(GBPL2FloodDomainServices.createPathObj($scope.selectedTenant.id), function(l2FloodData){\r
1581                 $scope.l2L3List.options = $scope.l2L3List.options.concat(l2FloodData);\r
1582             }, function(){\r
1583 \r
1584             });\r
1585 \r
1586             GBPL2BridgeDomainServices.load(GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id), function(l2BridgeData){\r
1587                 $scope.l2L3List.options = $scope.l2L3List.options.concat(l2BridgeData);\r
1588             }, function(){\r
1589 \r
1590             });\r
1591         };\r
1592 \r
1593         $scope.init = function() {\r
1594             if ( $scope.selectedTenant ) {\r
1595                 path = GBPSubnetServices.createPathObj($scope.selectedTenant.id);\r
1596                 \r
1597                 GBPSubnetServices.load(path, function(data){\r
1598                     $scope.list = data;\r
1599                     $scope.newSubnetObj = GBPSubnetServices.createObj();\r
1600                     $scope.selectedSubnet = null;\r
1601                     //$scope.sendReloadEventFromRoot('GBP_L2BRIDGE_RELOAD');\r
1602                 }, function(){\r
1603 \r
1604                 });\r
1605 \r
1606                 loadL2L3List();\r
1607             }\r
1608         };\r
1609 \r
1610         $scope.save = function(){\r
1611            if($scope.validateForm($scope.subnetForm)){\r
1612                 path = GBPSubnetServices.createPathObj($scope.selectedTenant.id, $scope.newSubnetObj.id);\r
1613                 GBPSubnetServices.send(path, $scope.newSubnetObj, function(data){\r
1614                     $scope.init();\r
1615                     $scope.subnetView = false;\r
1616                 }, function(){\r
1617                     //TODO: error cbk\r
1618                 });\r
1619             }\r
1620         };\r
1621 \r
1622         $scope.delete = function() {\r
1623             if($scope.selectedTenant && $scope.selectedSubnet) {\r
1624                 path = GBPSubnetServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id);\r
1625                 GBPSubnetServices.delete(path, function(data){\r
1626                     $scope.init();\r
1627                     $scope.subnetView = false;\r
1628                 }, function(){\r
1629                     //TODO: error cbk\r
1630                 });\r
1631             }\r
1632         };\r
1633 \r
1634         $scope.reload = function(selectedObj) {\r
1635             $scope.selectedSubnet = selectedObj;\r
1636             if($scope.subnetView) {\r
1637                 angular.copy(selectedObj, $scope.newSubnetObj);\r
1638             }\r
1639             $scope.sendReloadEventFromRoot('GBP_SUBNET_RELOAD');\r
1640         };\r
1641 \r
1642         $scope.showForm = function() {\r
1643             $scope.newSubnetObj = GBPSubnetServices.createObj();\r
1644             $scope.selectedSubnet = null;\r
1645             $scope.subnetView = true;\r
1646         };\r
1647 \r
1648         $scope.close = function(){\r
1649             $scope.subnetView = false;\r
1650         };\r
1651 \r
1652         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1653             if (!event.defaultPrevented) {\r
1654                 if ( $scope.selectedSubnet ) {\r
1655                     $scope.subnetView = true;\r
1656                     angular.copy($scope.selectedSubnet, $scope.newSubnetObj);\r
1657                 }\r
1658                 event.defaultPrevented = true;\r
1659             }\r
1660         });\r
1661 \r
1662         $scope.$on('GBP_TENANT_RELOAD',function(){\r
1663             $scope.init();\r
1664         });\r
1665 \r
1666         $scope.$on('GBP_GATEWAY_RELOAD',function(){\r
1667             $scope.init();\r
1668         });\r
1669         \r
1670         $scope.$on('GBP_L3CONTEXT_RELOAD',function(){\r
1671             loadL2L3List();\r
1672         });\r
1673 \r
1674         $scope.$on('GBP_L2BRIDGE_RELOAD',function(){\r
1675             loadL2L3List();\r
1676         });\r
1677 \r
1678         $scope.$on('GBP_L2FLOOD_RELOAD',function(){\r
1679             loadL2L3List();\r
1680         });\r
1681 \r
1682         $scope.$on('GBP_PREFIX_RELOAD',function(){\r
1683             $scope.init();\r
1684         });\r
1685         \r
1686     }]);\r
1687 \r
1688     gbp.register.controller('gatewayCtrl', ['$scope', 'GBPGatewayServices', function($scope, GBPGatewayServices){ \r
1689         $scope.list = [];\r
1690         $scope.gatewayView = false;\r
1691         $scope.selectedGateway = null;\r
1692         $scope.newGatewayObj = GBPGatewayServices.createObj();\r
1693         $scope.displayLabel = 'gateway';\r
1694         $scope.crudLabel = 'Gateway list';\r
1695         $scope.view = {\r
1696             gateway: false,\r
1697             edit: false\r
1698         };\r
1699 \r
1700 \r
1701         var path = null;\r
1702 \r
1703         $scope.init = function() {\r
1704             if ( $scope.selectedTenant && $scope.selectedSubnet ) {\r
1705                 path = GBPGatewayServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id);\r
1706                 \r
1707                 GBPGatewayServices.load(path, function(data){\r
1708                     $scope.list = data;\r
1709                     $scope.newGatewayObj = GBPGatewayServices.createObj();\r
1710                     $scope.view.gateway = false;\r
1711                     $scope.selectedGateway = null;\r
1712                 }, function(){\r
1713 \r
1714                 });\r
1715             }\r
1716         };\r
1717 \r
1718         $scope.save = function(){\r
1719             if($scope.validateForm($scope.gatewayForm)){\r
1720                 path = GBPGatewayServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id, $scope.newGatewayObj.gateway);\r
1721                 GBPGatewayServices.send(path, $scope.newGatewayObj, function(data){\r
1722                     $scope.init();\r
1723                     $scope.view.gateway = false;\r
1724                     $scope.sendReloadEventFromRoot('GBP_GATEWAY_RELOAD');\r
1725                 }, function(){\r
1726                     //TODO: error cbk\r
1727                 });\r
1728             }\r
1729         };\r
1730 \r
1731         $scope.delete = function() {\r
1732             if($scope.selectedTenant && $scope.selectedSubnet && $scope.selectedGateway) {\r
1733                 path = GBPGatewayServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id, $scope.selectedGateway.gateway);\r
1734                 GBPGatewayServices.delete(path, function(data){\r
1735                     $scope.init();\r
1736                     $scope.view.gateway = false;\r
1737                     $scope.sendReloadEventFromRoot('GBP_GATEWAY_RELOAD');\r
1738                 }, function(){\r
1739                     //TODO: error cbk\r
1740                 });\r
1741             }\r
1742         };\r
1743 \r
1744         $scope.reload = function(selectedObj) {\r
1745             $scope.selectedGateway = selectedObj;\r
1746             angular.copy(selectedObj, $scope.newGatewayObj);\r
1747             $scope.sendReloadEventFromRoot('GBP_GATEWAY_SET');\r
1748         };\r
1749 \r
1750         $scope.showForm = function() {\r
1751             $scope.newGatewayObj = GBPGatewayServices.createObj();\r
1752             $scope.view.gateway = true;\r
1753             $scope.view.edit = false;\r
1754             $scope.selectedGateway = null;\r
1755         };\r
1756 \r
1757         $scope.close = function(){\r
1758             $scope.view.gateway = false;\r
1759         };\r
1760 \r
1761         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1762             if (!event.defaultPrevented) {\r
1763                 if ( $scope.selectedGateway ) {\r
1764                     $scope.view.gateway = true;\r
1765                     $scope.view.edit = true;\r
1766                     angular.copy($scope.selectedGateway, $scope.newGatewayObj);\r
1767                 }\r
1768                 event.defaultPrevented = true;\r
1769             }\r
1770         });\r
1771 \r
1772         $scope.$on('GBP_SUBNET_RELOAD',function(){\r
1773             $scope.init();\r
1774         });\r
1775 \r
1776         $scope.$on('GBP_PREFIX_RELOAD',function(){\r
1777             $scope.init();\r
1778         });\r
1779     }]);\r
1780 \r
1781     gbp.register.controller('prefixCtrl', ['$scope', 'GBPPrefixServices', function($scope, GBPPrefixServices){ \r
1782         $scope.list = [];\r
1783         $scope.selectedPrefix = null;\r
1784         $scope.newPrefixObj = GBPPrefixServices.createObj();\r
1785         $scope.displayLabel = 'prefix';\r
1786         $scope.crudLabel = 'Prefix list';\r
1787         $scope.view = {\r
1788             prefix: false,\r
1789             edit: false\r
1790         };\r
1791 \r
1792 \r
1793         var path = null;\r
1794 \r
1795         $scope.init = function() {\r
1796             if ( $scope.selectedTenant && $scope.selectedSubnet && $scope.selectedGateway) {\r
1797                 path = GBPPrefixServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id, $scope.selectedGateway.gateway);\r
1798                 \r
1799                 GBPPrefixServices.load(path, function(data){\r
1800                     $scope.list = data;\r
1801                     $scope.newPrefixObj = GBPPrefixServices.createObj();\r
1802                     $scope.view.prefix = false;\r
1803                     $scope.selectedPrefix = null;\r
1804                 }, function(){\r
1805 \r
1806                 });\r
1807             }\r
1808         };\r
1809 \r
1810         $scope.save = function(){\r
1811             if($scope.validateForm($scope.prefixForm)){\r
1812                 path = GBPPrefixServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id, $scope.selectedGateway.gateway, $scope.newPrefixObj.prefix);\r
1813                 GBPPrefixServices.send(path, $scope.newPrefixObj, function(data){\r
1814                     $scope.init();\r
1815                     $scope.view.prefix = false;\r
1816                     $scope.sendReloadEventFromRoot('GBP_PREFIX_RELOAD');\r
1817                 }, function(){\r
1818                     //TODO: error cbk\r
1819                 });\r
1820             }\r
1821         };\r
1822 \r
1823         $scope.delete = function() {\r
1824             path = GBPPrefixServices.createPathObj($scope.selectedTenant.id, $scope.selectedSubnet.id, $scope.selectedGateway.gateway, $scope.selectedPrefix.prefix);\r
1825             GBPPrefixServices.delete(path, function(data){\r
1826                 $scope.init();\r
1827                 $scope.view.prefix = false;\r
1828                 $scope.sendReloadEventFromRoot('GBP_PREFIX_RELOAD');\r
1829             }, function(){\r
1830                 //TODO: error cbk\r
1831             });\r
1832         };\r
1833 \r
1834         $scope.reload = function(selectedObj) {\r
1835             $scope.selectedPrefix = selectedObj;\r
1836             angular.copy(selectedObj, $scope.newPrefixObj);\r
1837         };\r
1838 \r
1839         $scope.showForm = function() {\r
1840             $scope.newPrefixObj = GBPPrefixServices.createObj();\r
1841             $scope.view.prefix = true;\r
1842             $scope.view.edit = false;\r
1843             $scope.selectedPrefix = null;\r
1844         };\r
1845 \r
1846         $scope.close = function(){\r
1847             $scope.view.prefix = false;\r
1848         };\r
1849 \r
1850         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1851             if (!event.defaultPrevented) {\r
1852                 if ( $scope.selectedPrefix ) {\r
1853                     $scope.view.prefix = true;\r
1854                     $scope.view.edit = true;\r
1855                     angular.copy($scope.selectedPrefix, $scope.newPrefixObj);\r
1856                 }\r
1857                 event.defaultPrevented = true;\r
1858             }\r
1859         });\r
1860 \r
1861         $scope.$on('GBP_GATEWAY_SET',function(){\r
1862             $scope.init();\r
1863         });\r
1864     }]);\r
1865 \r
1866     gbp.register.controller('renderersCtrl', ['$scope', 'GPBServices', function($scope, GPBServices){ //GBPContractServices\r
1867         $scope.classifierDefinitions = {'options' : [], 'labels' : null};\r
1868         $scope.actionDefinitions = {'options' : [], 'labels' : null};\r
1869 \r
1870         //reload on event?\r
1871 \r
1872         var loadDefinitions = function() {\r
1873             GPBServices.getDefinitions(function(classifierDefs, actionDefs) {\r
1874                 $scope.classifierDefinitions.options = classifierDefs;\r
1875                 $scope.getDisplayLabelsFromCtrl('GBP_CLASSIFIERS_LABEL', $scope.classifierDefinitions);\r
1876 \r
1877                 $scope.actionDefinitions.options = actionDefs;\r
1878                 $scope.getDisplayLabelsFromCtrl('GBP_ACTIONS_LABEL', $scope.actionDefinitions);\r
1879             });\r
1880         };\r
1881 \r
1882         loadDefinitions();\r
1883     }]);\r
1884 \r
1885     gbp.register.controller('paramCtrl', ['$scope', 'GPBServices', function($scope, GPBServices){\r
1886         $scope.value = null;\r
1887 \r
1888         $scope.init = function(param, paramValues) {\r
1889             $scope.parameter = param;\r
1890 \r
1891             if(paramValues) {\r
1892                 paramValues.forEach(function(p) {\r
1893                     if($scope.parameter.name === p.name) {\r
1894                         $scope.value = GPBServices.getInstanceParamValue(p);\r
1895                     }\r
1896                 });\r
1897             }\r
1898         };\r
1899 \r
1900         $scope.$on('GBP_SAVE_PARAM', function(event){\r
1901             if($scope.value !== '' && $scope.value !== null) {\r
1902                 $scope.addParam($scope.parameter.name, $scope.parameter.type, $scope.value);\r
1903             }\r
1904         });\r
1905 \r
1906         $scope.$on('GBP_SET_PARAM_VALUE', function(event, name, intVal, strVal) {\r
1907             console.info($scope.parameter, ' got GBP_SET_PARAM_VALUE', name, intVal, strVal, event);\r
1908             \r
1909         });\r
1910     }]);\r
1911 \r
1912     gbp.register.controller('classifiersCtrl', ['$scope', 'GBPClassifierInstanceServices', 'GPBServices', '$filter',\r
1913         function($scope, GBPClassifierInstanceServices, GPBServices, $filter){\r
1914         $scope.list = [];\r
1915         $scope.classifiersView = false;\r
1916         $scope.displayLabel = 'name';\r
1917         $scope.selectedClassifier = null;\r
1918         $scope.crudLabel = 'Classifiers';\r
1919         $scope.newClassifierObj = GBPClassifierInstanceServices.createObj();\r
1920         $scope.edit = false;\r
1921 \r
1922         var mandatoryProperties = ['name'];\r
1923 \r
1924         $scope.getDefinitionObjParams = function(id){\r
1925             return GPBServices.getDefinitionObjParams($scope.classifierDefinitions.options, id);\r
1926         };\r
1927 \r
1928         $scope.reloadDefs = function(){\r
1929             $scope.defs = angular.copy($scope.getDefinitionObjParams($scope.newClassifierObj['classifier-definition-id']));\r
1930         };\r
1931 \r
1932         $scope.addParam = function(name, type, value) {\r
1933             $scope.newClassifierObj['parameter-value'].push(GPBServices.createParamObj(name, type, value));\r
1934         };\r
1935 \r
1936         var saveParams = function() {\r
1937             $scope.newClassifierObj['parameter-value'] = [];\r
1938             $scope.$broadcast('GBP_SAVE_PARAM');\r
1939         };\r
1940 \r
1941 \r
1942         $scope.init = function() {\r
1943             if ( $scope.selectedTenant ) {\r
1944                 path = GBPClassifierInstanceServices.createPathObj($scope.selectedTenant.id);\r
1945                 GBPClassifierInstanceServices.load(path, function(data){\r
1946                     $scope.list = data;\r
1947                     $scope.reloadDefs();\r
1948                 }, function(){\r
1949                     //TODO: error cbk\r
1950                 });\r
1951             }\r
1952         };\r
1953 \r
1954         $scope.save = function(){\r
1955             if($scope.validateForm($scope.classifierForm)){\r
1956                 path = GBPClassifierInstanceServices.createPathObj($scope.selectedTenant.id, $scope.newClassifierObj.name);\r
1957                 saveParams();\r
1958                 GBPClassifierInstanceServices.send(path, $scope.newClassifierObj, function(data){\r
1959                     $scope.init();\r
1960                     $scope.classifiersView = false;\r
1961                 $scope.sendReloadEventFromRoot('GBP_CLASSIFIER_INSTANCE_RELOAD');\r
1962                 }, function(){\r
1963                     //TODO: error cbk\r
1964                 });\r
1965             }\r
1966         };\r
1967 \r
1968         $scope.showForm = function() {\r
1969             $scope.newClassifierObj = GBPClassifierInstanceServices.createObj();\r
1970             $scope.selectedClassifier = null;\r
1971             $scope.classifiersView = true;\r
1972             $scope.edit = false;\r
1973             $scope.reloadDefs();\r
1974         };\r
1975 \r
1976         $scope.reload = function(selectedObj){\r
1977             $scope.selectedClassifier = selectedObj;\r
1978             if($scope.classifiersView) {\r
1979                 angular.copy(selectedObj, $scope.newClassifierObj);\r
1980             }\r
1981             $scope.sendReloadEventFromRoot('GBP_CLASSIFIER_INSTANCE_RELOAD');\r
1982             $scope.reloadDefs();\r
1983         };\r
1984 \r
1985         $scope.close = function(){\r
1986             $scope.classifiersView = false;\r
1987             $scope.edit = false;\r
1988         };\r
1989 \r
1990         $scope.$on('PGN_EDIT_ELEM', function(event){\r
1991             if (!event.defaultPrevented) {\r
1992                 if ( $scope.selectedClassifier ) {\r
1993                     $scope.classifiersView = true;\r
1994                     angular.copy($scope.selectedClassifier, $scope.newClassifierObj);\r
1995                     $scope.edit = true;\r
1996                     $scope.reloadDefs();\r
1997                 }\r
1998                 event.defaultPrevented = true;\r
1999             }\r
2000         });\r
2001 \r
2002         $scope.delete = function(){\r
2003             path = GBPClassifierInstanceServices.createPathObj($scope.selectedTenant.id, $scope.selectedClassifier.name);\r
2004             GBPClassifierInstanceServices.delete(path, function(data){\r
2005                 $scope.init();\r
2006                 $scope.classifiersView = false;\r
2007                 $scope.sendReloadEventFromRoot('GBP_CLASSIFIER_INSTANCE_RELOAD');\r
2008             }, function(){\r
2009                 //TODO: error cbk\r
2010             });\r
2011         };\r
2012 \r
2013         $scope.$on('GBP_TENANT_RELOAD',function(){\r
2014             $scope.init();\r
2015         });\r
2016 \r
2017         $scope.$on('GBP_CLASSIFIERS_LABEL', function(event, obj){\r
2018             obj.labels = $scope.displayLabel;\r
2019         });\r
2020     }]);\r
2021 \r
2022     gbp.register.controller('actionsCtrl', ['$scope', 'GBPActionInstanceServices', 'GPBServices', '$filter',\r
2023         function($scope, GBPActionInstanceServices, GPBServices, $filter){\r
2024         $scope.list = [];\r
2025         $scope.actionsView = false;\r
2026         $scope.displayLabel = 'name';\r
2027         $scope.selectedAction = null;\r
2028         $scope.crudLabel = 'Actions';\r
2029         $scope.newActionObj = GBPActionInstanceServices.createObj();\r
2030         $scope.edit = false;\r
2031 \r
2032         var mandatoryProperties = ['name'];\r
2033 \r
2034         $scope.getDefinitionObjParams = function(id){\r
2035             return GPBServices.getDefinitionObjParams($scope.actionDefinitions.options, id);\r
2036         };\r
2037 \r
2038         $scope.reloadDefs = function(){\r
2039             $scope.defs = angular.copy($scope.getDefinitionObjParams($scope.newActionObj['action-definition-id']));\r
2040         };\r
2041 \r
2042         $scope.addParam = function(name, type, value) {\r
2043             $scope.newActionObj['parameter-value'].push(GPBServices.createParamObj(name, type, value));\r
2044         };\r
2045 \r
2046         var saveParams = function() {\r
2047             $scope.newActionObj['parameter-value'] = [];\r
2048             $scope.$broadcast('GBP_SAVE_PARAM');\r
2049         };\r
2050 \r
2051 \r
2052         $scope.init = function() {\r
2053             if ( $scope.selectedTenant ) {\r
2054                 path = GBPActionInstanceServices.createPathObj($scope.selectedTenant.id);\r
2055                 GBPActionInstanceServices.load(path, function(data){\r
2056                     $scope.list = data;\r
2057                     $scope.reloadDefs();\r
2058                 }, function(){\r
2059                     //TODO: error cbk\r
2060                 });\r
2061             }\r
2062         };\r
2063 \r
2064         $scope.save = function(){\r
2065             if($scope.validateForm($scope.actionsForm)){\r
2066                 path = GBPActionInstanceServices.createPathObj($scope.selectedTenant.id, $scope.newActionObj.name);\r
2067                 saveParams();\r
2068 \r
2069                 GBPActionInstanceServices.send(path, $scope.newActionObj, function(data){\r
2070                     $scope.init();\r
2071                     $scope.actionsView = false;\r
2072                 $scope.sendReloadEventFromRoot('GBP_ACTION_INSTANCE_RELOAD');\r
2073                 }, function(){\r
2074                     //TODO: error cbk\r
2075                 });\r
2076             }\r
2077         };\r
2078 \r
2079         $scope.showForm = function() {\r
2080             $scope.newActionObj = GBPActionInstanceServices.createObj();\r
2081             $scope.selectedAction = null;\r
2082             $scope.actionsView = true;\r
2083             $scope.edit = false;\r
2084             $scope.reloadDefs();\r
2085         };\r
2086 \r
2087         $scope.reload = function(selectedObj){\r
2088             $scope.selectedAction = selectedObj;\r
2089             if($scope.actionsView) {\r
2090                 angular.copy(selectedObj, $scope.newActionObj);\r
2091             }\r
2092             $scope.sendReloadEventFromRoot('GBP_ACTION_INSTANCE_RELOAD');\r
2093             $scope.reloadDefs();\r
2094         };\r
2095 \r
2096         $scope.close = function(){\r
2097             $scope.actionsView = false;\r
2098             $scope.edit = false;\r
2099         };\r
2100 \r
2101         $scope.$on('PGN_EDIT_ELEM', function(event){\r
2102             if (!event.defaultPrevented) {\r
2103                 if ( $scope.selectedAction ) {\r
2104                     $scope.actionsView = true;\r
2105                     angular.copy($scope.selectedAction, $scope.newActionObj);\r
2106                     $scope.edit = true;\r
2107                     $scope.reloadDefs();\r
2108                 }\r
2109                 event.defaultPrevented = true;\r
2110             }\r
2111         });\r
2112 \r
2113         $scope.delete = function(){\r
2114             path = GBPActionInstanceServices.createPathObj($scope.selectedTenant.id, $scope.selectedAction.name);\r
2115             GBPActionInstanceServices.delete(path, function(data){\r
2116                 $scope.init();\r
2117                 $scope.actionsView = false;\r
2118                 $scope.sendReloadEventFromRoot('GBP_ACTION_INSTANCE_RELOAD');\r
2119             }, function(){\r
2120                 //TODO: error cbk\r
2121             });\r
2122         };\r
2123 \r
2124         $scope.$on('GBP_TENANT_RELOAD',function(){\r
2125             $scope.init();\r
2126         });\r
2127 \r
2128         $scope.$on('GBP_ACTIONS_LABEL', function(event, obj){\r
2129             obj.labels = $scope.displayLabel;\r
2130         });\r
2131     }]);\r
2132 \r
2133     gbp.register.controller('endpointCtrl', ['$scope', 'GBPEndpointServices', 'GPBServices', 'GBPL2FloodDomainServices', 'GBPL2BridgeDomainServices', 'GBPL3ContextServices', 'GBPEpgServices', '$filter',\r
2134         function($scope, GBPEndpointServices, GPBServices, GBPL2FloodDomainServices, GBPL2BridgeDomainServices, GBPL3ContextServices, GBPEpgServices, $filter){\r
2135         $scope.list = [];\r
2136         $scope.selectedEndpoint = null;\r
2137         $scope.newEndpointObj = GBPEndpointServices.createObj();\r
2138         $scope.endpointView = false;\r
2139         $scope.displayLabel = function(obj) {\r
2140             return obj['mac-address'] + ':' + obj['l2-context'];\r
2141         };\r
2142         $scope.crudLabel = 'Endpoint list';\r
2143 \r
2144         $scope.l2context = {'options' : [], 'labels' : null};\r
2145         $scope.getDisplayLabelsFromCtrl('GBP_L2FLOOD_LABEL', $scope.l2context);\r
2146 \r
2147         $scope.l3context = {'options' : [], 'labels' : null};\r
2148         $scope.getDisplayLabelsFromCtrl('GBP_L3CONTEXT_LABEL', $scope.l3context);\r
2149 \r
2150         $scope.epg = {'options' : [], 'labels' : null};\r
2151         $scope.getDisplayLabelsFromCtrl('GBP_EPG_LABEL', $scope.epg);\r
2152 \r
2153         var path = null,\r
2154             mandatoryProperties = [];\r
2155 \r
2156         var loadEpgOptions = function() {\r
2157             $scope.epg.options = [];\r
2158 \r
2159             path = GBPEpgServices.createPathObj($scope.selectedTenant.id);\r
2160             GBPEpgServices.load(path, function(data){\r
2161                 $scope.epg.options = data;\r
2162             }, function(){\r
2163                 //TODO: error cbk\r
2164             });\r
2165         };\r
2166 \r
2167         var loadL2ContextOptions = function() {\r
2168             $scope.l2context.options = [];\r
2169 \r
2170             path = GBPL2FloodDomainServices.createPathObj($scope.selectedTenant.id);\r
2171                 \r
2172             GBPL2FloodDomainServices.load(path, function(data){\r
2173                 $scope.l2context.options = $scope.l2context.options.concat(data);\r
2174             }, function(){\r
2175 \r
2176             });\r
2177 \r
2178             path = GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id);\r
2179             GBPL2BridgeDomainServices.load(path, function(data){\r
2180                 $scope.l2context.options = $scope.l2context.options.concat(data);\r
2181             }, function(){\r
2182 \r
2183             });\r
2184         };\r
2185 \r
2186         var loadL3ContextOptions = function(){\r
2187             $scope.l3context.options = [];\r
2188 \r
2189             GBPL3ContextServices.load(GBPL3ContextServices.createPathObj($scope.selectedTenant.id), function(data){\r
2190                 $scope.l3context.options = data;\r
2191             }, function(){\r
2192 \r
2193             });\r
2194         };\r
2195         \r
2196         $scope.init = function() {\r
2197             if ($scope.selectedTenant) {\r
2198 \r
2199                 GBPEndpointServices.load(path, function(data){\r
2200                     $scope.list = data;\r
2201                 }, function(){\r
2202                     //TODO: error cbk\r
2203                 });\r
2204 \r
2205                 loadEpgOptions();\r
2206                 loadL2ContextOptions();\r
2207                 loadL3ContextOptions();\r
2208             }\r
2209         };\r
2210 \r
2211         $scope.addNewL3address = function() {\r
2212             if($scope.newEndpointObj) {\r
2213                 if(!$scope.newEndpointObj['l3-address']){\r
2214                     $scope.newEndpointObj['l3-address'] = [];\r
2215                 }\r
2216                 var objToPush = {'l3-context' : '', 'ip-address' : ''};\r
2217                 $scope.newEndpointObj['l3-address'].push(objToPush);\r
2218             }\r
2219         };\r
2220 \r
2221         $scope.deleteNewL3address = function(index){\r
2222             if($scope.newEndpointObj) {\r
2223                 $scope.newEndpointObj['l3-address'].splice(index, 1);\r
2224             }\r
2225         };\r
2226 \r
2227         $scope.addNewLeafListEl = function(prop) {\r
2228             if($scope.newEndpointObj) {\r
2229                 if(!$scope.newEndpointObj[prop]){\r
2230                     $scope.newEndpointObj[prop] = [];\r
2231                 }\r
2232                 var objToPush = "";\r
2233                 $scope.newEndpointObj[prop].push(objToPush);\r
2234             }\r
2235         };\r
2236 \r
2237         $scope.updateLeafListEl = function(index, value, prop) {\r
2238             if($scope.newEndpointObj && $scope.newEndpointObj[prop] && $scope.newEndpointObj[prop].length >= index) {\r
2239                 $scope.newEndpointObj[prop][index] = value;\r
2240             }\r
2241         };\r
2242 \r
2243         $scope.deleteNewLeafListEl = function(index, prop){\r
2244             if($scope.newEndpointObj) {\r
2245                 $scope.newEndpointObj[prop].splice(index, 1);\r
2246             }\r
2247         };\r
2248 \r
2249         $scope.save = function(){\r
2250             if($scope.validateForm($scope.endpointForm)){\r
2251                 GBPEndpointServices.send(path, $scope.newEndpointObj, function(data){\r
2252                     $scope.init();\r
2253                     $scope.endpointView = false;\r
2254                     $scope.reloadNewObj();\r
2255                 }, function(){\r
2256                     //TODO: error cbk\r
2257                 });\r
2258             }\r
2259         };\r
2260 \r
2261         $scope.delete = function() {\r
2262             if($scope.selectedTenant && $scope.selectedEndpoint) {\r
2263                 GBPEndpointServices.delete(path, $scope.selectedEndpoint, function(data){\r
2264                     $scope.init();\r
2265                     $scope.endpointView = false;\r
2266                 }, function(){\r
2267                     //TODO: error cbk\r
2268                 });\r
2269             }\r
2270         };\r
2271 \r
2272         $scope.showForm = function() {\r
2273             $scope.endpointView = true;\r
2274             $scope.reloadNewObj();\r
2275             $scope.selectedEndpoint = null;\r
2276         };\r
2277 \r
2278         $scope.reloadNewObj = function() {\r
2279             $scope.newEndpointObj = GBPEndpointServices.createObj();\r
2280         };\r
2281 \r
2282         $scope.reload = function(selectedObj) {\r
2283             $scope.selectedEndpoint = selectedObj;\r
2284             if($scope.endpointView) {\r
2285                 angular.copy(selectedObj, $scope.newEndpointObj);\r
2286             }\r
2287         };\r
2288 \r
2289         $scope.close = function(){\r
2290             $scope.endpointView = false;\r
2291         };\r
2292 \r
2293         $scope.$on('PGN_EDIT_ELEM', function(event){\r
2294             if (!event.defaultPrevented) {\r
2295                 if ( $scope.selectedEndpoint ) {\r
2296                     $scope.endpointView = true;\r
2297                     angular.copy($scope.selectedEndpoint, $scope.newEndpointObj);\r
2298                 }\r
2299                 event.defaultPrevented = true;\r
2300             }\r
2301         });\r
2302 \r
2303         $scope.$on('GBP_TENANT_RELOAD',function(){\r
2304             $scope.init();\r
2305         });\r
2306 \r
2307         $scope.$on('GBP_EPG_RELOAD',function(){\r
2308             loadEpgOptions();\r
2309         });\r
2310 \r
2311         $scope.$on('GBP_L2BRIDGE_RELOAD',function(){\r
2312             loadL2ContextOptions();\r
2313         });\r
2314 \r
2315         $scope.$on('GBP_L2FLOOD_RELOAD',function(){\r
2316             loadL2ContextOptions();\r
2317         });\r
2318 \r
2319         $scope.$on('GBP_L3CONTEXT_RELOAD',function(){\r
2320             loadL3ContextOptions();\r
2321         });\r
2322     }]);\r
2323 \r
2324     gbp.register.controller('l3EndpointCtrl', ['$scope', 'GBPEndpointL3Services', 'GPBServices', 'GBPEpgServices', 'GBPL3ContextServices', 'GBPL2FloodDomainServices', 'GBPL2BridgeDomainServices', '$filter',\r
2325         function($scope, GBPEndpointL3Services, GPBServices, GBPEpgServices, GBPL3ContextServices, GBPL2FloodDomainServices, GBPL2BridgeDomainServices, $filter){\r
2326         $scope.list = [];\r
2327         $scope.selectedEndpoint = null;\r
2328         $scope.newEndpointObj = GBPEndpointL3Services.createObj($scope.selectedTenant ? $scope.selectedTenant.id : null);\r
2329         $scope.endpointView = false;\r
2330         $scope.displayLabel = function(obj) {\r
2331             return obj['ip-prefix'] + ':' + obj['l3-context'];\r
2332         };\r
2333         $scope.crudLabel = 'L3 Prefix endpoint list';\r
2334 \r
2335         $scope.l2context = {'options' : [], 'labels' : null};\r
2336         $scope.getDisplayLabelsFromCtrl('GBP_L2FLOOD_LABEL', $scope.l2context);\r
2337 \r
2338         $scope.l3context = {'options' : [], 'labels' : null};\r
2339         $scope.getDisplayLabelsFromCtrl('GBP_L3CONTEXT_LABEL', $scope.l3context);\r
2340 \r
2341         $scope.epg = {'options' : [], 'labels' : null};\r
2342         $scope.getDisplayLabelsFromCtrl('GBP_EPG_LABEL', $scope.epg);\r
2343 \r
2344 \r
2345         var path = null,\r
2346             mandatoryProperties = [];\r
2347 \r
2348         var loadEpgOptions = function() {\r
2349             $scope.epg.options = [];\r
2350 \r
2351             path = GBPEpgServices.createPathObj($scope.selectedTenant.id);\r
2352             GBPEpgServices.load(path, function(data){\r
2353                 $scope.epg.options = data;\r
2354             }, function(){\r
2355                 //TODO: error cbk\r
2356             });\r
2357         };\r
2358 \r
2359         var loadL2ContextOptions = function() {\r
2360             $scope.l2context.options = [];\r
2361 \r
2362             path = GBPL2FloodDomainServices.createPathObj($scope.selectedTenant.id);\r
2363                 \r
2364             GBPL2FloodDomainServices.load(path, function(data){\r
2365                 $scope.l2context.options = $scope.l2context.options.concat(data);\r
2366             }, function(){\r
2367 \r
2368             });\r
2369 \r
2370             path = GBPL2BridgeDomainServices.createPathObj($scope.selectedTenant.id);\r
2371             GBPL2BridgeDomainServices.load(path, function(data){\r
2372                 $scope.l2context.options = $scope.l2context.options.concat(data);\r
2373             }, function(){\r
2374 \r
2375             });\r
2376         };\r
2377 \r
2378         var loadL3ContextOptions = function(){\r
2379             $scope.l3context.options = [];\r
2380 \r
2381             GBPL3ContextServices.load(GBPL3ContextServices.createPathObj($scope.selectedTenant.id), function(data){\r
2382                 $scope.l3context.options = data;\r
2383             }, function(){\r
2384 \r
2385             });\r
2386         };\r
2387         \r
2388         $scope.init = function() {\r
2389             if ($scope.selectedTenant) {\r
2390 \r
2391                 GBPEndpointL3Services.load(path, function(data){\r
2392                     $scope.list = data;\r
2393                 }, function(){\r
2394                     //TODO: error cbk\r
2395                 });\r
2396 \r
2397                 loadEpgOptions();\r
2398                 loadL2ContextOptions();\r
2399                 loadL3ContextOptions();\r
2400             }\r
2401         };\r
2402 \r
2403         $scope.addNewL2gateways = function() {\r
2404             if($scope.newEndpointObj) {\r
2405                 if(!$scope.newEndpointObj['endpoint-l2-gateways']){\r
2406                     $scope.newEndpointObj['endpoint-l2-gateways'] = [];\r
2407                 }\r
2408                 var objToPush = {'l2-context' : '', 'mac-address' : ''};\r
2409                 $scope.newEndpointObj['endpoint-l2-gateways'].push(objToPush);\r
2410             }\r
2411         };\r
2412 \r
2413         $scope.deleteNewL2gateways = function(index){\r
2414             if($scope.newEndpointObj) {\r
2415                 $scope.newEndpointObj['endpoint-l2-gateways'].splice(index, 1);\r
2416             }\r
2417         };\r
2418 \r
2419         $scope.addNewL3gateways = function() {\r
2420             if($scope.newEndpointObj) {\r
2421                 if(!$scope.newEndpointObj['endpoint-l3-gateways']){\r
2422                     $scope.newEndpointObj['endpoint-l3-gateways'] = [];\r
2423                 }\r
2424                 var objToPush = {'l3-context' : '', 'ip-address' : ''};\r
2425                 $scope.newEndpointObj['endpoint-l3-gateways'].push(objToPush);\r
2426             }\r
2427         };\r
2428 \r
2429         $scope.deleteNewL3gateways = function(index){\r
2430             if($scope.newEndpointObj) {\r
2431                 $scope.newEndpointObj['endpoint-l3-gateways'].splice(index, 1);\r
2432             }\r
2433         };\r
2434 \r
2435         $scope.addNewLeafListEl = function(prop) {\r
2436             if($scope.newEndpointObj) {\r
2437                 if(!$scope.newEndpointObj[prop]){\r
2438                     $scope.newEndpointObj[prop] = [];\r
2439                 }\r
2440                 var objToPush = "";\r
2441                 $scope.newEndpointObj[prop].push(objToPush);\r
2442             }\r
2443         };\r
2444 \r
2445         $scope.updateLeafListEl = function(index, value, prop) {\r
2446             if($scope.newEndpointObj && $scope.newEndpointObj[prop] && $scope.newEndpointObj[prop].length >= index) {\r
2447                 $scope.newEndpointObj[prop][index] = value;\r
2448             }\r
2449         };\r
2450 \r
2451         $scope.deleteNewLeafListEl = function(index, prop){\r
2452             if($scope.newEndpointObj) {\r
2453                 $scope.newEndpointObj[prop].splice(index, 1);\r
2454             }\r
2455         };\r
2456 \r
2457         $scope.save = function(){\r
2458             if($scope.validateForm($scope.l3EndpointForm)){\r
2459                 GBPEndpointL3Services.send(path, $scope.newEndpointObj, function(data){\r
2460                     $scope.init();\r
2461                     $scope.endpointView = false;\r
2462                     $scope.reloadNewObj();\r
2463                 }, function(){\r
2464                     //TODO: error cbk\r
2465                 });\r
2466             }\r
2467         };\r
2468 \r
2469         $scope.delete = function() {\r
2470             if($scope.selectedTenant && $scope.selectedEndpoint) {\r
2471                 GBPEndpointL3Services.delete(path, $scope.selectedEndpoint, function(data){\r
2472                     $scope.init();\r
2473                 }, function(){\r
2474                     //TODO: error cbk\r
2475                 });\r
2476             }\r
2477         };\r
2478 \r
2479         $scope.showForm = function() {\r
2480             $scope.endpointView = true;\r
2481             $scope.reloadNewObj();\r
2482             $scope.selectedEndpoint = null;\r
2483         };\r
2484 \r
2485         $scope.reloadNewObj = function() {\r
2486             $scope.newEndpointObj = GBPEndpointL3Services.createObj($scope.selectedTenant.id);\r
2487         };\r
2488 \r
2489         $scope.reload = function(selectedObj) {\r
2490             $scope.selectedEndpoint = selectedObj;\r
2491             if($scope.endpointView) {\r
2492                 angular.copy(selectedObj, $scope.newEndpointObj);\r
2493             }\r
2494         };\r
2495 \r
2496         $scope.close = function(){\r
2497             $scope.endpointView = false;\r
2498         };\r
2499 \r
2500         $scope.$on('PGN_EDIT_ELEM', function(event){\r
2501             if (!event.defaultPrevented) {\r
2502                 if ( $scope.selectedEndpoint ) {\r
2503                     $scope.endpointView = true;\r
2504                     angular.copy($scope.selectedEndpoint, $scope.newEndpointObj);\r
2505                 }\r
2506                 event.defaultPrevented = true;\r
2507             }\r
2508         });\r
2509 \r
2510         $scope.$on('GBP_TENANT_RELOAD',function(){\r
2511             $scope.init();\r
2512         });\r
2513 \r
2514         $scope.$on('GBP_EPG_RELOAD',function(){\r
2515             loadEpgOptions();\r
2516         });\r
2517 \r
2518         $scope.$on('GBP_L2BRIDGE_RELOAD',function(){\r
2519             loadL2ContextOptions();\r
2520         });\r
2521 \r
2522         $scope.$on('GBP_L2FLOOD_RELOAD',function(){\r
2523             loadL2ContextOptions();\r
2524         });\r
2525 \r
2526         $scope.$on('GBP_L3CONTEXT_RELOAD',function(){\r
2527             loadL3ContextOptions();\r
2528         });\r
2529     }]);\r
2530 \r
2531 });\r
2532 \r
2533 \r