电子档案
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

  1. /* Licensed under the Apache License, Version 2.0 (the "License");
  2. * you may not use this file except in compliance with the License.
  3. * You may obtain a copy of the License at
  4. *
  5. * http://www.apache.org/licenses/LICENSE-2.0
  6. *
  7. * Unless required by applicable law or agreed to in writing, software
  8. * distributed under the License is distributed on an "AS IS" BASIS,
  9. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. * See the License for the specific language governing permissions and
  11. * limitations under the License.
  12. */
  13. flowableApp.controller('GroupMgmtController', ['$rootScope', '$scope', '$translate', '$http', '$timeout','$location', '$modal', '$popover', 'IdmService',
  14. function ($rootScope, $scope, $translate, $http, $timeout, $location, $modal, $popover, IdmService) {
  15. var validUser = true;
  16. $rootScope.setMainPageById('groupMgmt');
  17. $scope.model = {
  18. loading: true,
  19. expanded: {}
  20. };
  21. $scope.showCreateGroupPopup = function() {
  22. $scope.model.editedGroup = {};
  23. $scope.model.mode = 'create';
  24. _internalCreateModal({
  25. scope: $scope,
  26. template: 'views/popup/idm-group-create.html',
  27. show: true
  28. }, $modal, $scope);
  29. };
  30. var fetchUserPage = function() {
  31. $scope.model.loadingUsers = true;
  32. IdmService.getUsersForGroup($scope.model.selectedGroup.id, $scope.model.userFilter ,$scope.model.userPage, $scope.model.pageSize).then(function(data) {
  33. $scope.model.users = data;
  34. $scope.model.moreUsers = $scope.model.selectedGroup.userCount > (($scope.model.userPage+1 ) * $scope.model.pageSize);
  35. $scope.model.loadingUsers = false;
  36. });
  37. };
  38. $scope.selectGroup = function(groupId) {
  39. $scope.model.loadingGroup = true;
  40. IdmService.getGroup(groupId).then(function (data) {
  41. $scope.model.selectedGroup = data;
  42. $scope.model.userPage = 0;
  43. $scope.model.pageSize = 50;
  44. fetchUserPage();
  45. $scope.model.loadingGroup = false;
  46. });
  47. };
  48. $scope.showPreviousUsers = function() {
  49. $scope.model.userPage--;
  50. fetchUserPage();
  51. };
  52. $scope.showNextUsers = function() {
  53. $scope.model.userPage++;
  54. fetchUserPage();
  55. };
  56. $scope.refreshDelayed = function() {
  57. // If already waiting, another wait-cycle will be done
  58. // after the current wait is over
  59. if($scope.model.waiting) {
  60. $scope.model.delayed = true;
  61. } else {
  62. $scope.scheduleDelayedRefresh();
  63. }
  64. };
  65. $scope.scheduleDelayedRefresh = function() {
  66. $scope.model.waiting = true;
  67. $timeout(function() {
  68. $scope.model.waiting = false;
  69. if( $scope.model.delayed) {
  70. $scope.model.delayed = false;
  71. // Delay again
  72. $scope.scheduleDelayedRefresh();
  73. } else {
  74. $scope.model.userPage = 0;
  75. fetchUserPage();
  76. }
  77. }, 100);
  78. };
  79. $scope.createGroup = function() {
  80. $scope.model.loading = true;
  81. IdmService.createGroup($scope.model.editedGroup).then(function (data) {
  82. $scope.fetchGroups(data.id);
  83. $scope.model.loading = false;
  84. });
  85. };
  86. $scope.updateGroup = function() {
  87. $scope.model.loadingGroup = true;
  88. IdmService.updateGroup($scope.model.editedGroup.id, $scope.model.editedGroup).then(function (data) {
  89. $scope.model.selectedGroup = data;
  90. // Find the entry in the list on the left, and update its name
  91. for (var i=0; i<$scope.model.groups.length; i++){
  92. if ($scope.model.groups[i].id === data.id) {
  93. $scope.model.groups[i].name = data.name;
  94. }
  95. }
  96. $scope.model.loadingGroup = false;
  97. });
  98. };
  99. $scope.showDeleteGroupModal = function() {
  100. _internalCreateModal({
  101. scope: $scope,
  102. template: 'views/popup/idm-delete-group.html',
  103. show: true
  104. }, $modal, $scope);
  105. };
  106. $scope.deleteGroup = function() {
  107. $scope.model.loading = true;
  108. IdmService.deleteGroup($scope.model.selectedGroup.id).then(function() {
  109. $scope.model.loading = false;
  110. clearSelection();
  111. $scope.fetchGroups();
  112. });
  113. };
  114. $scope.showActivateGroupModal = function() {
  115. _internalCreateModal({
  116. scope: $scope,
  117. template: 'views/popup/idm-activate-group.html',
  118. show: true
  119. }, $modal, $scope);
  120. };
  121. $scope.activateGroup = function() {
  122. $scope.model.loading = true;
  123. IdmService.activateGroup($scope.model.selectedGroup.id).then(function() {
  124. $scope.model.loading = false;
  125. clearSelection();
  126. $scope.fetchGroups();
  127. });
  128. };
  129. // Clear any selected tenant
  130. var clearSelection = function() {
  131. delete $scope.model.groups;
  132. delete $scope.model.selectedGroup;
  133. };
  134. $scope.showEditGroupModal = function() {
  135. $scope.model.editedGroup = $scope.model.selectedGroup;
  136. $scope.model.mode = 'edit';
  137. _internalCreateModal({
  138. scope: $scope,
  139. template: 'views/popup/idm-group-create.html',
  140. show: true
  141. }, $modal, $scope);
  142. };
  143. $scope.showRemoveMemberModal = function(user) {
  144. $scope.model.userToRemove = user;
  145. _internalCreateModal({
  146. scope: $scope,
  147. template: 'views/popup/idm-group-member-delete.html',
  148. show: true
  149. }, $modal, $scope);
  150. };
  151. $scope.deleteGroupMember = function() {
  152. IdmService.deleteGroupMember($scope.model.selectedGroup.id, $scope.model.userToRemove.id).then(function(data) {
  153. for (var i=0; i<$scope.model.users.data.length; i++) {
  154. if ($scope.model.users.data[i].id === $scope.model.userToRemove.id) {
  155. $scope.model.users.data.splice(i, 1);
  156. delete $scope.model.userToRemove;
  157. break;
  158. }
  159. }
  160. fetchUserPage();
  161. });
  162. };
  163. $scope.addGroupMember = function(user) {
  164. IdmService.addGroupMember($scope.model.selectedGroup.id, user.id).then(function() {
  165. $scope.selectGroup($scope.model.selectedGroup.id, true);
  166. });
  167. };
  168. // Load the groups
  169. $scope.fetchGroups = function(groupIdToSelect) {
  170. $scope.model.loading = true;
  171. clearSelection();
  172. IdmService.getFunctionalGroups().then(function(data) {
  173. $scope.model.groups = data;
  174. var groupIndex;
  175. $scope.model.expanded = {};
  176. // Select a group
  177. if (groupIdToSelect) {
  178. $scope.selectGroup(groupIdToSelect);
  179. }
  180. // By default, open first level of groups
  181. for (groupIndex = 0; groupIndex < data.length; groupIndex++) {
  182. $scope.model.expanded[data[groupIndex].id] = true;
  183. }
  184. $scope.model.loading = false;
  185. });
  186. };
  187. if(validUser) {
  188. $scope.fetchGroups();
  189. }
  190. }]);