(function () { 'use strict'; /** * MODULE DESCRIPTION: * * TODO: Write description here. */ angular.module('portal.dashboard.permissionBank', ['ui.router']) .controller('PermissionBankCtrl', PermissionBankCtrlController); function PermissionBankCtrlController($scope, cache, permissionStores, permissionProvider, $mdDialog, uiGridConstants, portalUtils, Constants) { $scope.confirmQuestionBox = true; $scope.permissions = []; $scope.Constants = Constants; $scope.mCache = cache.request([new permissionStores.PermissionGroups()]).then(function(){ $scope.permissions = $scope.mCache.permissionGroups.data.values; }); portalUtils.setScopeValue($scope, 'loadingBlock', false, true); $scope.permGrid = { data: 'permissions', paginationPageSizes: [28, 56, 84, 102], paginationPageSize: 28, enableHorizontalScrollbar: uiGridConstants.scrollbars.NEVER, toggleModifierKeysToMultiSelect : true, enableRowHeaderSelection: true, enableColumnMenus: true, enableGridMenu: true, exporterCsvFilename: 'Files.csv', exporterMenuCsv: true, multiSelect: true, noUnselect: false, onRegisterApi: function (gridApi) { gridApi.selection.setModifierKeysToMultiSelect(true); $scope.permGridApi = gridApi; }, columnDefs: [ {field: 'displayName', displayName: 'Permission Group', width: '*'}, {field: 'enabled', displayName: 'Enabled', width: '*'}, {field: 'permissions', displayName: 'Allowed Permissions', width: '***', cellTemplate: '
{{grid.appScope.formatPermissions(row.entity.permissions)}}
'}, {field: 'id', displayName: 'Actions', width: '100', enableColumnMenu: false, enableFiltering: false, enableHiding: false, cellTemplate: 'main/permission-bank/cell-templates/permission-actions.html'} ], }; $scope.formatPermissions = function(perms) { var p = []; for (var i = 0; i < perms.length; i++) { var perm = perms[i]; if (perm.allowed) { p.push(perm.displayName); } } return p.join(', '); }; $scope.$on('$destroy', function () { $scope.mCache.unlisten(); }); $scope.toggleFiltering = function() { $scope.permGrid.enableFiltering = !$scope.permGrid.enableFiltering; $scope.permGridApi.core.notifyDataChange( uiGridConstants.dataChange.COLUMN ); }; var originatorEv; $scope.openMenu = function($mdOpenMenu, ev) { originatorEv = ev; $mdOpenMenu(ev); }; $scope.delete = function(entity) { if ($scope.confirmQuestionBox) { portalUtils.confirmBox('deletePermissionGroup', 'Delete Permission Group', ['Are you sure you want to delete the permission group', entity.displayName], true, function(value) { if (value.confirm) { $scope.confirmQuestionBox = !value.checkbox; $scope.deletePermission(entity); } }); } else { $scope.deletePermission(entity); } }; $scope.deletePermission = function(entity) { portalUtils.setScopeValue($scope, 'loadingBlock', true, true); permissionProvider.deletePermissionGroup(entity).then(function(data) { portalUtils.toast('Successfully deleted permission group ' + entity.displayName, ['top', 'left'], 2000); portalUtils.setScopeValue($scope, 'loadingBlock', false, true); }).catch(function(err){ portalUtils.toast('Unable to delete permission group: ' + err.message, ['top', 'left'], 4000); portalUtils.setScopeValue($scope, 'loadingBlock', false, true); }); }; $scope.edit = function(entity) { $mdDialog.show({ templateUrl: 'common/partials/add-permission/add-permission.html', controller: 'AddPermissionCtrl', escapeToClose: false, locals: { modalInstance: { header: 'Edit Permission Group', permission: entity, } } }); }; $scope.addPermissions = function() { $mdDialog.show({ templateUrl: 'common/partials/add-permission/add-permission.html', controller: 'AddPermissionCtrl', escapeToClose: false, locals: { modalInstance: { header: 'Add Permissions', } } }); }; } //end PermissionBankCtrlController function })();