<value>src/app/gbp/common/gbp.css</value>
<value>src/app/gbp/vendor/angular-material/angular-material.css</value>
<value>src/app/gbp/vendor/angular-material-data-table/dist/md-data-table.min.css</value>
+ <value>src/app/gbp/vendor/roboto-fontface/css/roboto-fontface.css</value>
</list>
</property>
</bean>
.gbpUiWrapper.flt-r {
float: right;
}
+
+/* LAYOUT */
+.layout-padding-lr15 {
+ padding: 0 15px;
+}
+
+/* TABLES */
+.gbpUiWrapper .md-table span {
+ color: rgba(0,0,0,.87);
+}
+
+/* BUTTONS */
+.gbpUiWrapper button.md-primary span {
+ color: rgb(33,150,243);
+}
'angular-animate',
'angular-aria',
'angular-material',
- 'angular-material-data-table'], function () {
+ 'angular-material-data-table',
+ 'angular-messages'], function () {
var gbp = angular.module('app.gbp',
[
- 'app.core', 'ui.router.state', 'restangular', 'ngAnimate', 'ngAria', 'ngMaterial', 'md.data.table',
+ 'app.core', 'ui.router.state', 'restangular', 'ngAnimate', 'ngAria', 'ngMaterial', 'md.data.table', 'ngMessages'
]);
gbp.register = gbp; // for adding services, controllers, directives etc. to angular module before bootstrap
NavHelperProvider.addControllerUrl('app/gbp/contract/contract.controller');
NavHelperProvider.addControllerUrl('app/gbp/epg/epg.controller');
NavHelperProvider.addControllerUrl('app/gbp/policy/policy.controller');
+ NavHelperProvider.addControllerUrl('app/gbp/tenant/add-tenant.controller');
NavHelperProvider.addControllerUrl('app/gbp/tenant/tenant.controller');
NavHelperProvider.addToMenu('gbp', {
'icon': 'icon-level-down',
'page': {
'title': 'GBP',
- 'description': 'GBP ui',
- },
+ 'description': 'GBP ui'
+ }
});
var access = routingConfig.accessLevels;
// access: access.public,
views: {
'content': {
- templateUrl: 'src/app/gbp/common/views/root.tpl.html',
+ templateUrl: 'src/app/gbp/common/views/root.tpl.html'
},
},
views: {
'': {
controller: 'RootGbpCtrl',
- templateUrl: 'src/app/gbp/common/views/index.tpl.html',
+ templateUrl: 'src/app/gbp/common/views/index.tpl.html'
},
},
});
'angular-aria': 'app/gbp/vendor/angular-aria/angular-aria.min',
'lodash': 'app/gbp/vendor/lodash/dist/lodash.min',
'angular-material-data-table': 'app/gbp/vendor/angular-material-data-table/dist/md-data-table.min',
+ 'angular-messages' : 'app/gbp/vendor/angular-messages/angular-messages.min'
},
shim: {
'angular-material': ['angular'],
'angular-animate': ['angular'],
'angular-aria': ['angular'],
'angular-material-data-table': ['angular', 'angular-material'],
+ 'angular-messages' : ['angular'],
},
});
--- /dev/null
+define([
+ 'app/gbp/tenant/tenant.service'
+], function () {
+ 'use strict';
+
+ angular.module('app.gbp').controller('AddTenantController', AddTenantController);
+
+ AddTenantController.$inject = ['$mdDialog', '$scope', 'TenantService'];
+ /* @ngInject */
+ function AddTenantController($mdDialog, $scope, TenantService) {
+ /* properties */
+ $scope.tenant = TenantService.createObject();
+
+ /* methods */
+ $scope.closeDialog = closeDialog;
+ $scope.save = save;
+
+ /* Implementations */
+
+ function closeDialog(){
+ $mdDialog.cancel();
+ }
+
+ function save() {
+ $scope.tenant.put(function(data) {
+ $scope.closeDialog();
+ }, function(err) {
+ } );
+ }
+ }
+});
--- /dev/null
+<md-dialog ng-cloak>
+ <form name="tenantForm">
+ <md-toolbar>
+ <div class="md-toolbar-tools">
+ <h2>Tenant</h2>
+ <span flex></span>
+ <md-button ng-click="closeDialog()" class="md-button">Close dialog</md-button>
+ </div>
+ </md-toolbar>
+ <md-dialog-content style="width:350px;">
+ <div layout="column" class="layout-padding-lr15">
+ <div layout="row">
+ <md-input-container flex>
+ <label>Id</label>
+ <input name="id" ng-model="tenant.data.id" ng-required="true">
+ <div ng-messages="tenantForm.id.$error" md-auto-hide="false">
+ <div ng-message="required">Required field</div>
+ </div>
+ </md-input-container>
+ <md-input-container flex>
+ <label>Name</label>
+ <input name="name" ng-model="tenant.data.name" ng-required="true">
+ <div ng-messages="tenantForm.name.$error" md-auto-hide="false">
+ <div ng-message="required">Required field</div>
+ </div>
+ </md-input-container>
+ </div>
+ <div layout="row">
+ <md-input-container flex>
+ <label>Description</label>
+ <input name="description" ng-model="tenant.data.description">
+ </md-input-container>
+ </div>
+ </div>
+ </md-dialog-content>
+ <md-dialog-actions layout="row">
+ <span flex></span>
+ <md-button ng-click="closeDialog()" class="md-primary">
+ Close
+ </md-button>
+ <md-button ng-click="save()" style="margin-right:20px;" ng-disabled="tenantForm.$invalid" class="md-primary">
+ Save
+ </md-button>
+ </md-dialog-actions>
+ </form>
+</md-dialog>
angular.module('app.gbp').controller('TenantController', TenantController);
- TenantController.$inject = ['$scope', 'TenantService', 'TenantListService'];
+ TenantController.$inject = ['$mdDialog', '$scope', 'TenantListService'];
/* @ngInject */
- function TenantController($scope, TenantService, TenantListService) {
- $scope.tenantsTableQuery = {
- order: "data.id",
- limit: 25,
- page: 1,
- options: [25, 50, 100],
- filter: ''
- };
-
+ function TenantController($mdDialog, $scope, TenantListService) {
+ /* properties */
$scope.tenants = TenantListService.createList();
- $scope.tenants.get('config');
+ $scope.tenantsTableQuery = {};
+
+ /* methods */
+ $scope.getTenantList = getTenantList;
+ $scope.openTenantDialog = openTenantDialog;
+
+ init();
+
+ /* Implementations */
+
+ /**
+ * fills $scope.tenants array with data from data store
+ */
+ function getTenantList() {
+ $scope.tenants.get('config');
+ }
+
+ /**
+ * Initializing function
+ */
+ function init() {
+ $scope.tenantsTableQuery = {
+ order: "data.id",
+ limit: 25,
+ page: 1,
+ options: [25, 50, 100],
+ filter: ''
+ };
+
+ getTenantList();
+ }
+
+ function openTenantDialog() {
+ $mdDialog.show({
+ clickOutsideToClose: true,
+ controller: 'AddTenantController',
+ preserveScope: true,
+ templateUrl: 'src/app/gbp/tenant/dialog-add-tenant.tpl.html',
+ parent: angular.element(document.body),
+ scope: $scope,
+ locals: {
+ //policy: $scope.selectedObjects.policy
+ }
+ });
+ }
+
+
}
});
/* methods */
this.setData = setData;
this.get = get;
+ this.put = put;
/* Implementation */
/**
self.setData(data.tenant[0]);
});
}
+
+ function put(successCallback) {
+ var self = this;
+
+ var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
+ .one(self.data.id),
+ dataObj = {tenant: [self.data]};
+
+ return restObj.customPUT(dataObj).then(function(data) {
+ successCallback(data);
+ }, function(res) {
+
+ });
+ }
}
/**
<section flex layout="column">
- <md-table-container ng-if="tenants.data.length">
+ <div flex layout="row">
+ <md-button ng-click="openTenantDialog()" class="md-primary">Add</md-button>
+ <md-button ng-click="getTenantList()" class="md-primary">Reload</md-button>
+ </div>
+ <md-table-container>
<table md-table>
<thead md-head md-order="tenantsTableQuery.order">
<tr md-row>