From d341add1d182d9c2b2017e60fb9d2a1ca6790aa3 Mon Sep 17 00:00:00 2001 From: Michal Kovacik Date: Mon, 9 May 2016 11:20:06 +0200 Subject: [PATCH] initial contracts work contract services added, controller updated, TMP updated Signed-off-by: Michal Kovacik --- .../gbp/contract/contract-list.service.js | 54 +++++++++++++ .../gbp/contract/contract.controller.js | 18 ++++- .../gbp/contract/contract.service.js | 75 +++++++++++++++++++ .../resources/gbp/contract/contract.tpl.html | 13 ++++ 4 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract-list.service.js create mode 100644 groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.service.js diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract-list.service.js b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract-list.service.js new file mode 100644 index 000000000..a6fafa7a1 --- /dev/null +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract-list.service.js @@ -0,0 +1,54 @@ +define([], function () { + 'use strict'; + + angular.module('app.gbp').service('ContractListService', ContractListService); + + ContractListService.$inject = ['Restangular', 'ContractService']; + + function ContractListService(Restangular, ContractService) { + /* methods */ + this.createList = createList; + + function ContractList() { + /* properties */ + this.data = []; + /* methods */ + this.setData = setData; + this.get = get; + + /* Implementation */ + /** + * fills ContractList object with data + * @param data + */ + function setData(data) { + var self = this; + data.forEach(function (dataElement) { + self.data.push(ContractService.createObject(dataElement)); + }); + } + + function get(dataStore) { + /* jshint validthis:true */ + var self = this; + + var restObj = Restangular.one('restconf').one(dataStore).one('policy:tenants') + .one('tenant').one('tenant1').one('policy'); + + return restObj.get().then(function (data) { + if (data.policy.contract) { + self.setData(data.policy.contract); + } + }); + } + } + + function createList() { + var obj = new ContractList(); + + return obj; + } + } + + return ContractListService; +}); diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.controller.js b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.controller.js index 5d3fa1dea..2f77133d0 100644 --- a/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.controller.js +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.controller.js @@ -1,13 +1,25 @@ define([ - + 'app/gbp/contract/contract.service', + 'app/gbp/contract/contract-list.service', ], function () { 'use strict'; angular.module('app.gbp').controller('ContractController', ContractController); - ContractController.$inject = ['$scope']; + ContractController.$inject = ['$scope', 'TenantService', 'ContractService', 'ContractListService']; + + function ContractController($scope, TenantService, ContractService, ContractListService) { + $scope.tenant = TenantService.createObject(); + $scope.tenant.get('tenant1'); + console.log('tenant from CONTRACT CTRL:', $scope.tenant); + + $scope.contract = ContractService.createObject(); + $scope.contract.get('contract1'); + console.log('contract from CONTRACT CTRL', $scope.contract); - function ContractController($scope) { + $scope.contracts = ContractListService.createList(); + $scope.contracts.get('config'); + console.log('contracts from CONTRACT CTRL', $scope.contracts); } }); diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.service.js b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.service.js new file mode 100644 index 000000000..992f0ea8c --- /dev/null +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.service.js @@ -0,0 +1,75 @@ +define([], function () { + 'use strict'; + + angular.module('app.gbp').service('ContractService', ContractService); + + ContractService.$inject = ['Restangular']; + + function ContractService(Restangular) { + /* methods */ + this.createObject = createObject; + + /** + * Contract constructor + * @constructor + */ + function Contract() { + /* properties */ + this.data = {}; + /* methods */ + this.setData = setData; + this.get = get; + + /* Implementation */ + /** + * fills Contract object with data + * @param data + */ + function setData(data) { + this.data.id = data.id; + this.data.description = data.description; + this.data.parent = data.parent; + + // TODO: use objects + this.data['forwarding-context'] = data['forwarding-context']; + this.data.target = data.target; + this.data.subject = data.subject; + this.data.clause = data.clause; + this.data.quality = data.quality; + } + + /** + * gets one Contract object from Restconf + * @param id + * @returns {*} + */ + function get(id) { + var self = this; + + var restObj = Restangular.one('restconf').one('config').one('policy:tenants') + .one('tenant').one('tenant1').one('policy').one('contract').one(this.data.id || id); + + return restObj.get().then(function (data) { + self.setData(data.contract[0]); + }); + } + } + + /** + * creates Contract object and fills it with data if available + * @param data + * @returns {Contract} + */ + function createObject(data) { + var obj = new Contract(); + + if (data) { + obj.setData(data); + } + + return obj; + } + } + + return ContractService; +}); diff --git a/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.tpl.html b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.tpl.html index e69de29bb..961b26463 100644 --- a/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.tpl.html +++ b/groupbasedpolicy-ui/module/src/main/resources/gbp/contract/contract.tpl.html @@ -0,0 +1,13 @@ +

Contrats of tenant: tenant1



+

contract1:


+id: {{contract.data.id}}
+description: {{contract.data.description}}
+parent:{{contract.data.parent}}
+

his containers:


+

Target object:


{{contract.data.target}} +

Subject object:


{{contract.data.subject}} +

Clause object:


{{contract.data.clause}} +

Quality object:


{{contract.data.quality}} +
+

tenant1 contracts list:


+
{{contractElement.data}}

-- 2.36.6