user_group_details_ctrl.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. ///<reference path="../../headers/common.d.ts" />
  2. import coreModule from 'app/core/core_module';
  3. import _ from 'lodash';
  4. export default class UserGroupDetailsCtrl {
  5. userGroup: any;
  6. userGroupMembers = [];
  7. user: any;
  8. usersSearchCache = [];
  9. searchUsers: any;
  10. constructor(private $scope, private $http, private backendSrv, private $routeParams) {
  11. this.get();
  12. this.usersSearchCache = [];
  13. this.searchUsers = (queryStr, callback) => {
  14. if (this.usersSearchCache.length > 0) {
  15. callback(_.map(this.usersSearchCache, (user) => { return user.login + ' - ' + user.email; }));
  16. return;
  17. }
  18. this.backendSrv.get('/api/users/search?perpage=10&page=1&query=' + queryStr).then(result => {
  19. this.usersSearchCache = result.users;
  20. callback(_.map(result.users, (user) => { return user.login + ' - ' + user.email; }));
  21. });
  22. };
  23. }
  24. get() {
  25. if (this.$routeParams && this.$routeParams.id) {
  26. this.backendSrv.get(`/api/user-groups/${this.$routeParams.id}`)
  27. .then(result => {
  28. this.userGroup = result;
  29. });
  30. this.backendSrv.get(`/api/user-groups/${this.$routeParams.id}/members`)
  31. .then(result => {
  32. this.userGroupMembers = result;
  33. });
  34. }
  35. }
  36. removeUserGroupMember(userGroupMember) {
  37. this.$scope.appEvent('confirm-modal', {
  38. title: 'Remove Member',
  39. text: 'Are you sure you want to remove ' + userGroupMember.name + ' from this group?',
  40. yesText: "Remove",
  41. icon: "fa-warning",
  42. onConfirm: () => {
  43. this.removeMemberConfirmed(userGroupMember);
  44. }
  45. });
  46. }
  47. removeMemberConfirmed(userGroupMember) {
  48. this.backendSrv.delete(`/api/user-groups/${this.$routeParams.id}/members/${userGroupMember.userId}`)
  49. .then(this.get.bind(this));
  50. }
  51. update() {
  52. if (!this.$scope.userGroupDetailsForm.$valid) { return; }
  53. this.backendSrv.put('/api/user-groups/' + this.userGroup.id, {name: this.userGroup.name});
  54. }
  55. addMember() {
  56. if (!this.$scope.addMemberForm.$valid) { return; }
  57. const login = this.user.name.split(' - ')[0];
  58. const memberToAdd = _.find(this.usersSearchCache, ['login', login]);
  59. this.backendSrv.post(`/api/user-groups/${this.$routeParams.id}/members`, {userId: memberToAdd.id}).then(() => {
  60. this.user.name = '';
  61. this.get();
  62. });
  63. }
  64. }
  65. coreModule.controller('UserGroupDetailsCtrl', UserGroupDetailsCtrl);