From 987597b387a8b1aa823eb15ee535a01c549b790a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C4=BDubom=C3=ADr=20Balogh?= Date: Wed, 18 May 2016 12:14:41 +0200 Subject: [PATCH] EPG CRUD MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Ľubomír Balogh --- .../resources/gbp/epg/add-epg.controller.js | 32 ++++++++ .../resources/gbp/epg/dialog-add-epg.tpl.html | 68 +++++++++++++++ .../main/resources/gbp/epg/epg.controller.js | 82 +++++++++++++++++-- .../src/main/resources/gbp/epg/epg.service.js | 41 ++++++++-- .../src/main/resources/gbp/epg/epg.tpl.html | 52 ++++++++++-- 5 files changed, 254 insertions(+), 21 deletions(-) create mode 100644 groupbasedpolicy-ui/module/src/main/resources/gbp/epg/add-epg.controller.js create mode 100644 groupbasedpolicy-ui/module/src/main/resources/gbp/epg/dialog-add-epg.tpl.html diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/add-epg.controller.js b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/add-epg.controller.js new file mode 100644 index 000000000..eee5e777f --- /dev/null +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/add-epg.controller.js @@ -0,0 +1,32 @@ +define([ + 'app/gbp/epg/epg.service' +], function () { + 'use strict'; + + angular.module('app.gbp').controller('AddEpgController', AddEpgController); + + AddEpgController.$inject = ['$mdDialog', '$scope', 'EpgService', 'epg']; + /* @ngInject */ + function AddEpgController($mdDialog, $scope, EpgService, epg) { + /* properties */ + $scope.epg = epg ? epg : EpgService.createObject(); + + /* methods */ + $scope.closeDialog = closeDialog; + $scope.save = save; + + /* Implementations */ + + function closeDialog(){ + $mdDialog.cancel(); + $scope.getEpgList(); + } + + function save() { + $scope.epg.put($scope.rootTenant, function(data) { + $scope.closeDialog(); + }, function(err) { + } ); + } + } +}); diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/dialog-add-epg.tpl.html b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/dialog-add-epg.tpl.html new file mode 100644 index 000000000..65b048383 --- /dev/null +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/dialog-add-epg.tpl.html @@ -0,0 +1,68 @@ + +
+ +
+

EPG

+ + Close dialog +
+
+ +
+
+ + + +
+
Required field
+
+
+ + + +
+
Required field
+
+ Invalid pattern. + Value must matches: ^[a-zA-Z]([a-zA-Z0-9\\-_.])*$ +
+
+
+
+
+ + + + +
+
+ + + + {{igp}} + + +
+
+ + + + + + + + +
+
+
+ + + + Close + + + Save + + +
+
diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.controller.js b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.controller.js index 562723016..d3013969d 100644 --- a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.controller.js +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.controller.js @@ -6,16 +6,84 @@ define([ angular.module('app.gbp').controller('EpgController', EpgController); - EpgController.$inject = ['$scope', 'EpgService', 'EpgListService']; + EpgController.$inject = ['$scope', '$stateParams', '$mdDialog', 'EpgService', 'EpgListService']; - function EpgController($scope, EpgService, EpgListService) { - $scope.epg = EpgService.createObject(); - $scope.epg.get('epg_test', 'tenant_test'); - console.log('Epg', $scope.epg); + function EpgController($scope, $stateParams, $mdDialog, EpgService, EpgListService) { + $scope.epgsTableQuery = {}; + + // $scope.epg = EpgService.createObject(); + // $scope.epg.get($stateParams.epgId, $stateParams.tenantId); $scope.epgs = EpgListService.createList(); - $scope.epgs.get('config', 'tenant2'); - console.log('Epgs', $scope.epgs); + /* methods */ + $scope.getEpgList = getEpgList; + $scope.openEpgDialog = openEpgDialog; + $scope.deleteEpgDialog = deleteEpgDialog; + + init(); + + /* Implementations */ + + /** + * fills $scope.epgs array with data from data store + */ + function getEpgList() { + if($stateParams.tenantId) { + $scope.epgs = EpgListService.createList(); + $scope.epgs.get('config', $stateParams.tenantId); + } + else { + $scope.epgs = EpgListService.createList(); + $scope.epgs.get('config', $scope.rootTenant); + } + } + + /** + * Initializing function + */ + function init() { + $scope.epgsTableQuery = { + order: 'data.id', + limit: 25, + page: 1, + options: [25, 50, 100], + filter: '' + }; + + getEpgList(); + } + + function openEpgDialog(epgData) { + $mdDialog.show({ + clickOutsideToClose: true, + controller: 'AddEpgController', + preserveScope: true, + templateUrl: 'src/app/gbp/epg/dialog-add-epg.tpl.html', + parent: angular.element(document.body), + scope: $scope, + locals: { + epg: epgData + } + }); + } + + function deleteEpgDialog(epgData) { + var confirm = $mdDialog.confirm() + .title('Delete EPG') + .textContent('Do you want to delete EPG ' + epgData.data.name + '?') + .ok('Delete') + .cancel('Cancel'); + + $mdDialog.show(confirm).then(function() { + epgData.deleteEpg($scope.rootTenant, + function() { + $scope.getEpgList(); + } + ); + }, function() { + + }); + } } }); \ No newline at end of file diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.service.js b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.service.js index bd2c0c58e..aee88c73b 100644 --- a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.service.js +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.service.js @@ -20,6 +20,8 @@ define([], function() { /* methods */ this.setData = setData; this.get = get; + this.put = put; + this.deleteEpg = deleteEpg; /* Implementation */ /** @@ -30,14 +32,14 @@ define([], function() { this.data.id = data.id; this.data.name = data.name; this.data.description = data.description; - this.data.intraGroupPolicy = data['intra-group-policy']; + this.data['intra-group-policy'] = data['intra-group-policy']; - this.data.consumerNamedSelector = data['consumer-named-selector']; - this.data.providerNamedSelector = data['provider-named-selector']; - this.data.consumerTargetSelector = data['consumer-target-selector']; - this.data.providerTargerSelector = data['provider-target-selector']; + this.data['consumer-named-selector'] = data['consumer-named-selector']; + this.data['provider-named-selector'] = data['provider-named-selector']; + this.data['consumer-target-selector'] = data['consumer-target-selector']; + this.data['provider-target-selector'] = data['provider-target-selector']; - this.data.networkDomain = data['network-domain']; + this.data['network-domain'] = data['network-domain']; this.data.parent = data.parent; this.data.requirement = data.requirement; @@ -59,6 +61,33 @@ define([], function() { self.setData(data['endpoint-group'][0]); }); } + + function put(idTenant, successCallback) { + var self = this; + + var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant') + .one(idTenant).one('policy').one('endpoint-group').one(self.data.id), + dataObj = {'endpoint-group': [self.data]}; + + return restObj.customPUT(dataObj).then(function(data) { + successCallback(data); + }, function(res) { + + }); + } + + function deleteEpg(idTenant, successCallback) { + var self = this; + + var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant') + .one(idTenant).one('policy').one('endpoint-group').one(self.data.id); + + return restObj.remove().then(function(data) { + successCallback(data); + }, function(res) { + + }); + } } /** diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.tpl.html b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.tpl.html index f391cc8bf..52aec48a8 100644 --- a/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.tpl.html +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/epg/epg.tpl.html @@ -1,9 +1,45 @@ -EPG
-id: {{epg.data.id}}
-name: {{epg.data.name}}
-description: {{epg.data.description}}
-intra-group-policy: {{epg.data.intraGroupPolicy}}
+
+
+ Add + Reload +
+ + + + + + + + + + + + + + + + + + + + + + -
- {{epgElement.data.id}}, {{epgElement.data.name}}, {{epgElement.data.description}}, {{epgElement.data.intraGroupPolicy}}, {{epgElement.data.networkDomain}}
-
+ +
IdNameDescriptionintra-group-policynetwork-domainParent
{{epg.data.id}}{{epg.data.name}}{{epg.data.description}}{{epg.data['intra-group-policy']}}{{epg.data['network-domain']}}{{epg.data.parent}} + + edit + + + delete + +
+ + +
+
\ No newline at end of file -- 2.36.6