diff --git a/app/scripts/controllers/organization/ViewRoleController.js b/app/scripts/controllers/organization/ViewRoleController.js index cb0ec082..de422126 100644 --- a/app/scripts/controllers/organization/ViewRoleController.js +++ b/app/scripts/controllers/organization/ViewRoleController.js @@ -1,9 +1,13 @@ (function (module) { mifosX.controllers = _.extend(module, { ViewRoleController: function (scope, routeParams, resourceFactory, route, $modal) { + scope.permissions = []; scope.groupings = []; scope.formData = {}; + scope.checkboxesChanged = false; // this flag is informing backup-system if user started editing + var bValuesOnly = []; // array for 1-0 values only from permission-checkboxes + var tempPermissionUIData = []; resourceFactory.rolePermissionResource.get({roleId: routeParams.id}, function (data) { scope.role = data; @@ -22,6 +26,16 @@ tempPermissionUIData[currentGrouping].permissions.push(temp); } + scope.backupCheckValues = function() + {//backup -> save the data from formData before editing to boolean array + for(var i = 0; i< this.permissions.permissions.length; i++) + { + var temp = this.formData[this.permissions.permissions[i].code]; + bValuesOnly.push(temp); + } + checkboxesChanged = true; // user started editing - set flag to true + }; + scope.isRoleEnable = function(value) { return value; }; @@ -88,17 +102,22 @@ }; scope.cancel = function () { - route.reload(); + route.reload(); scope.isDisabled = true; }; + scope.submit = function () { var permissionData = {}; permissionData.permissions = this.formData; resourceFactory.rolePermissionResource.update({roleId: routeParams.id}, permissionData, function (data) { route.reload(); + backupCheckValues();// reload current data in array (backup) + checkboxesChanged = false; // user finished editing - set flag to false scope.isDisabled = true; + }); + }; scope.showPermissions = function (grouping) { @@ -133,10 +152,57 @@ string = string.charAt(0).toUpperCase() + string.slice(1); return string; }; + + scope.selectAll = function(allSelected) + { + var checkboxes = document.getElementsByName('cp'); + + if(allSelected == false) + { + for(var i in checkboxes) + { + checkboxes[i].checked = 1; + } + for(var i = 0; i< this.permissions.permissions.length; i++) + { + this.formData[this.permissions.permissions[i].code] = true; + } + + } + else + { + for(var i in checkboxes) + { + checkboxes[i].checked = 0; + } + for(var i = 0; i< this.permissions.permissions.length; i++) + { + this.formData[this.permissions.permissions[i].code] = false; + } + + } + + }; + scope.restoreCheckboxes = function() + { + for(var i = 0; i < bValuesOnly.length;i++) + { + this.formData[this.permissions.permissions[i].code] = bValuesOnly[i]; + } + for(var i = bValuesOnly.length; i > 0; i--) + { + bValuesOnly.pop(); // erase old elements in flag-array + } + + checkboxesChanged = false; // user canceled editing - set flag to false + }; + + + }); } }); - mifosX.ng.application.controller('ViewRoleController', ['$scope', '$routeParams', 'ResourceFactory', '$route', '$modal', mifosX.controllers.ViewRoleController]).run(function ($log) { + mifosX.ng.application.controller('ViewRoleController', ['$scope', '$routeParams', 'ResourceFactory', '$route','$modal', mifosX.controllers.ViewRoleController]).run(function ($log) { $log.info("ViewRoleController initialized"); }); -}(mifosX.controllers || {})); +}(mifosX.controllers || {})); \ No newline at end of file diff --git a/app/views/administration/viewrole.html b/app/views/administration/viewrole.html index f28d6ef0..046a8dd2 100644 --- a/app/views/administration/viewrole.html +++ b/app/views/administration/viewrole.html @@ -64,7 +64,7 @@
- {{ + {{ 'label.button.edit' | translate }}
@@ -79,12 +79,18 @@ {{ 'label.button.delete' | translate }}
+
+
+ {{'label.button.selectAll' | translate}} + {{'label.button.deselectAll' | translate}} + +

{{'label.heading.permissions' | translate}}:  {{formatName(previousGrouping)}}

-
+ @@ -92,17 +98,18 @@
{{formatName(grouping)}}
+ - - +
-
- {{ 'label.button.cancel' | translate}} +
+ {{ 'label.button.cancel' | translate}}