Tenant dialogs 83/38983/1
authorMartin Péter Lakatoš <martin.lakatos@pantheon.tech>
Tue, 17 May 2016 15:46:52 +0000 (17:46 +0200)
committerMartin Péter Lakatoš <martin.lakatos@pantheon.tech>
Tue, 17 May 2016 15:50:39 +0000 (17:50 +0200)
- edit dialog
- delete dialog

Signed-off-by: Martin Péter Lakatoš <martin.lakatos@pantheon.tech>
groupbasedpolicy-ui/module/src/main/resources/gbp/common/gbp.css
groupbasedpolicy-ui/module/src/main/resources/gbp/tenant/add-tenant.controller.js
groupbasedpolicy-ui/module/src/main/resources/gbp/tenant/dialog-add-tenant.tpl.html
groupbasedpolicy-ui/module/src/main/resources/gbp/tenant/tenant.controller.js
groupbasedpolicy-ui/module/src/main/resources/gbp/tenant/tenant.service.js
groupbasedpolicy-ui/module/src/main/resources/gbp/tenant/tenant.tpl.html

index c0c84c02c542234123dfc5885bf554df36f3f136..725aff95b46ddd689f4574d3826266ef0e6327a3 100644 (file)
 .gbpUiWrapper .md-table span {
     color: rgba(0,0,0,.87);
 }
+.gbpUiWrapper .md-table-pagination span {
+    color: rgba(0,0,0,.87);
+    font-weight: normal;
+}
+.gbpUiWrapper button.md-button.md-icon-button.w85 {
+    width: 85px;
+}
 
 /* BUTTONS */
 .gbpUiWrapper button.md-primary span {
     color: rgb(33,150,243);
 }
+.gbpUiWrapper button .md-icon {
+    width: 30px;
+}
+
+/* DIALOG */
+.gbpDialogWrapper button.md-primary span {
+    color: rgba(0,0,0,0.87);
+}
+.gbpDialogWrapper button.md-primary[disabled] span {
+    color: rgba(0,0,0,0.26);
+}
+
+/* $mdDialog.confirm */
+md-dialog button span {
+    color: #000;
+}
\ No newline at end of file
index fc12c4c23e5e8f0d751b9f63f52d0a77c377369b..af1bd19a252ac5a9251b8a36b15a6e2a6989e5b2 100644 (file)
@@ -5,20 +5,20 @@ define([
 
     angular.module('app.gbp').controller('AddTenantController', AddTenantController);
 
-    AddTenantController.$inject = ['$mdDialog', '$scope', 'TenantService'];
+    AddTenantController.$inject = ['$mdDialog', '$scope', 'TenantService', 'tenant'];
     /* @ngInject */
-    function AddTenantController($mdDialog, $scope, TenantService) {
+    function AddTenantController($mdDialog, $scope, TenantService, tenant) {
         /* properties */
-        $scope.tenant = TenantService.createObject();
+        $scope.tenant = tenant ? tenant : TenantService.createObject();
 
         /* methods */
         $scope.closeDialog = closeDialog;
         $scope.save = save;
-
         /* Implementations */
 
         function closeDialog(){
             $mdDialog.cancel();
+            $scope.getTenantList();
         }
 
         function save() {
@@ -27,5 +27,6 @@ define([
             }, function(err) {
             } );
         }
+
     }
 });
index 17347c9dfc520ea8c5a26c631fd0a3972bb624ec..e4e6ad8a0e53c200e0b841e1dd015a0e9f750242 100644 (file)
@@ -1,4 +1,4 @@
-<md-dialog ng-cloak>
+<md-dialog ng-cloak class="gbpDialogWrapper">
     <form name="tenantForm">
         <md-toolbar>
             <div class="md-toolbar-tools">
                     <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-messages="tenantForm.id.$error">
                             <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>
+                        <input name="name" ng-model="tenant.data.name" ng-pattern="/^[a-zA-Z]([a-zA-Z0-9\\-_.])*$/" ng-required="true">
+                        <div ng-messages="tenantForm.name.$error">
+                            <div ng-message="required">Required field.</div>
+                            <div ng-message="pattern">
+                                Invalid pattern.
+                                <md-tooltip md-direction="right" style="padding-left: 10px;">Value must match: ^[a-zA-Z]([a-zA-Z0-9\\-_.])*$</md-tooltip>
+                            </div>
                         </div>
                     </md-input-container>
                 </div>
index 69e921c91675392136a15a54accb5b8a6fdb006f..16a92fa29129134ba5db6c42e98843f5e732446d 100644 (file)
@@ -16,6 +16,7 @@ define([
         /* methods */
         $scope.getTenantList = getTenantList;
         $scope.openTenantDialog = openTenantDialog;
+        $scope.deleteTenantDialog = deleteTenantDialog;
 
         init();
 
@@ -25,6 +26,7 @@ define([
          * fills $scope.tenants array with data from data store
          */
         function getTenantList() {
+            $scope.tenants = TenantListService.createList();
             $scope.tenants.get('config');
         }
 
@@ -43,7 +45,7 @@ define([
             getTenantList();
         }
 
-        function openTenantDialog() {
+        function openTenantDialog(tenantData) {
             $mdDialog.show({
                 clickOutsideToClose: true,
                 controller: 'AddTenantController',
@@ -52,11 +54,28 @@ define([
                 parent: angular.element(document.body),
                 scope: $scope,
                 locals: {
-                    //policy: $scope.selectedObjects.policy
+                    tenant: tenantData
                 }
             });
         }
 
+        function deleteTenantDialog(tenantData) {
+            var confirm = $mdDialog.confirm()
+                .title('Delete tenant')
+                .textContent('Do you want to delete tenant ' + tenantData.data.name + '?')
+                .ok('Delete')
+                .cancel('Cancel');
+
+            $mdDialog.show(confirm).then(function() {
+                tenantData.deleteTenant(
+                    function() {
+                        $scope.getTenantList();
+                    }
+                );
+            }, function() {
+
+            });
+        }
 
     }
 });
index b6457bd213d67b43b46c104b2ea34a0732b0cc98..4428c9db7a83e2b0f016ea4b24b0fabfa14bbe16 100644 (file)
@@ -21,6 +21,7 @@ define([], function () {
             this.setData = setData;
             this.get = get;
             this.put = put;
+            this.deleteTenant = deleteTenant;
 
             /* Implementation */
             /**
@@ -66,6 +67,19 @@ define([], function () {
 
                 });
             }
+
+            function deleteTenant(successCallback) {
+                var self = this;
+
+                var restObj = Restangular.one('restconf').one('config').one('policy:tenants').one('tenant')
+                    .one(self.data.id);
+
+                return restObj.remove().then(function(data) {
+                    successCallback(data);
+                }, function(res) {
+
+                });
+            }
         }
 
         /**
index 17f33cf638713ea1ee51003f1cc04471c6256094..c65747fbea1a611bf531c9207109ae352cad6d4d 100644 (file)
                 <td md-cell>{{tenant.data.name}}</td>
                 <td md-cell>{{tenant.data.description}}</td>
                 <td md-cell>
-                    <md-button class="md-icon-button" ng-click="edit(tenant)">
+                    <md-button class="md-icon-button" ng-click="openTenantDialog(tenant)">
                         <md-icon>edit</md-icon>
                     </md-button>
-                    <md-button class="md-icon-button" ng-click="delete(tenant)">
+                    <md-button class="md-icon-button w85" ng-click="deleteTenantDialog(tenant)">
                         <md-icon>delete</md-icon>
                     </md-button>
                 </td>