电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

225 lines
7.8 KiB

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
flowableApp.controller('GroupMgmtController', ['$rootScope', '$scope', '$translate', '$http', '$timeout','$location', '$modal', '$popover', 'IdmService',
function ($rootScope, $scope, $translate, $http, $timeout, $location, $modal, $popover, IdmService) {
var validUser = true;
$rootScope.setMainPageById('groupMgmt');
$scope.model = {
loading: true,
expanded: {}
};
$scope.showCreateGroupPopup = function() {
$scope.model.editedGroup = {};
$scope.model.mode = 'create';
_internalCreateModal({
scope: $scope,
template: 'views/popup/idm-group-create.html',
show: true
}, $modal, $scope);
};
var fetchUserPage = function() {
$scope.model.loadingUsers = true;
IdmService.getUsersForGroup($scope.model.selectedGroup.id, $scope.model.userFilter ,$scope.model.userPage, $scope.model.pageSize).then(function(data) {
$scope.model.users = data;
$scope.model.moreUsers = $scope.model.selectedGroup.userCount > (($scope.model.userPage+1 ) * $scope.model.pageSize);
$scope.model.loadingUsers = false;
});
};
$scope.selectGroup = function(groupId) {
$scope.model.loadingGroup = true;
IdmService.getGroup(groupId).then(function (data) {
$scope.model.selectedGroup = data;
$scope.model.userPage = 0;
$scope.model.pageSize = 50;
fetchUserPage();
$scope.model.loadingGroup = false;
});
};
$scope.showPreviousUsers = function() {
$scope.model.userPage--;
fetchUserPage();
};
$scope.showNextUsers = function() {
$scope.model.userPage++;
fetchUserPage();
};
$scope.refreshDelayed = function() {
// If already waiting, another wait-cycle will be done
// after the current wait is over
if($scope.model.waiting) {
$scope.model.delayed = true;
} else {
$scope.scheduleDelayedRefresh();
}
};
$scope.scheduleDelayedRefresh = function() {
$scope.model.waiting = true;
$timeout(function() {
$scope.model.waiting = false;
if( $scope.model.delayed) {
$scope.model.delayed = false;
// Delay again
$scope.scheduleDelayedRefresh();
} else {
$scope.model.userPage = 0;
fetchUserPage();
}
}, 100);
};
$scope.createGroup = function() {
$scope.model.loading = true;
IdmService.createGroup($scope.model.editedGroup).then(function (data) {
$scope.fetchGroups(data.id);
$scope.model.loading = false;
});
};
$scope.updateGroup = function() {
$scope.model.loadingGroup = true;
IdmService.updateGroup($scope.model.editedGroup.id, $scope.model.editedGroup).then(function (data) {
$scope.model.selectedGroup = data;
// Find the entry in the list on the left, and update its name
for (var i=0; i<$scope.model.groups.length; i++){
if ($scope.model.groups[i].id === data.id) {
$scope.model.groups[i].name = data.name;
}
}
$scope.model.loadingGroup = false;
});
};
$scope.showDeleteGroupModal = function() {
_internalCreateModal({
scope: $scope,
template: 'views/popup/idm-delete-group.html',
show: true
}, $modal, $scope);
};
$scope.deleteGroup = function() {
$scope.model.loading = true;
IdmService.deleteGroup($scope.model.selectedGroup.id).then(function() {
$scope.model.loading = false;
clearSelection();
$scope.fetchGroups();
});
};
$scope.showActivateGroupModal = function() {
_internalCreateModal({
scope: $scope,
template: 'views/popup/idm-activate-group.html',
show: true
}, $modal, $scope);
};
$scope.activateGroup = function() {
$scope.model.loading = true;
IdmService.activateGroup($scope.model.selectedGroup.id).then(function() {
$scope.model.loading = false;
clearSelection();
$scope.fetchGroups();
});
};
// Clear any selected tenant
var clearSelection = function() {
delete $scope.model.groups;
delete $scope.model.selectedGroup;
};
$scope.showEditGroupModal = function() {
$scope.model.editedGroup = $scope.model.selectedGroup;
$scope.model.mode = 'edit';
_internalCreateModal({
scope: $scope,
template: 'views/popup/idm-group-create.html',
show: true
}, $modal, $scope);
};
$scope.showRemoveMemberModal = function(user) {
$scope.model.userToRemove = user;
_internalCreateModal({
scope: $scope,
template: 'views/popup/idm-group-member-delete.html',
show: true
}, $modal, $scope);
};
$scope.deleteGroupMember = function() {
IdmService.deleteGroupMember($scope.model.selectedGroup.id, $scope.model.userToRemove.id).then(function(data) {
for (var i=0; i<$scope.model.users.data.length; i++) {
if ($scope.model.users.data[i].id === $scope.model.userToRemove.id) {
$scope.model.users.data.splice(i, 1);
delete $scope.model.userToRemove;
break;
}
}
fetchUserPage();
});
};
$scope.addGroupMember = function(user) {
IdmService.addGroupMember($scope.model.selectedGroup.id, user.id).then(function() {
$scope.selectGroup($scope.model.selectedGroup.id, true);
});
};
// Load the groups
$scope.fetchGroups = function(groupIdToSelect) {
$scope.model.loading = true;
clearSelection();
IdmService.getFunctionalGroups().then(function(data) {
$scope.model.groups = data;
var groupIndex;
$scope.model.expanded = {};
// Select a group
if (groupIdToSelect) {
$scope.selectGroup(groupIdToSelect);
}
// By default, open first level of groups
for (groupIndex = 0; groupIndex < data.length; groupIndex++) {
$scope.model.expanded[data[groupIndex].id] = true;
}
$scope.model.loading = false;
});
};
if(validUser) {
$scope.fetchGroups();
}
}]);