user_group_details_ctrl.ts 2.0 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: UserGroup;
  6. userGroupMembers: User[] = [];
  7. navModel: any;
  8. constructor(private $scope, private $http, private backendSrv, private $routeParams, navModelSrv) {
  9. this.navModel = navModelSrv.getOrgNav(3);
  10. this.get();
  11. }
  12. get() {
  13. if (this.$routeParams && this.$routeParams.id) {
  14. this.backendSrv.get(`/api/user-groups/${this.$routeParams.id}`)
  15. .then(result => {
  16. this.userGroup = result;
  17. });
  18. this.backendSrv.get(`/api/user-groups/${this.$routeParams.id}/members`)
  19. .then(result => {
  20. this.userGroupMembers = result;
  21. });
  22. }
  23. }
  24. removeUserGroupMember(userGroupMember: UserGroupMember) {
  25. this.$scope.appEvent('confirm-modal', {
  26. title: 'Remove Member',
  27. text: 'Are you sure you want to remove ' + userGroupMember.name + ' from this group?',
  28. yesText: "Remove",
  29. icon: "fa-warning",
  30. onConfirm: () => {
  31. this.removeMemberConfirmed(userGroupMember);
  32. }
  33. });
  34. }
  35. removeMemberConfirmed(userGroupMember: UserGroupMember) {
  36. this.backendSrv.delete(`/api/user-groups/${this.$routeParams.id}/members/${userGroupMember.userId}`)
  37. .then(this.get.bind(this));
  38. }
  39. update() {
  40. if (!this.$scope.userGroupDetailsForm.$valid) { return; }
  41. this.backendSrv.put('/api/user-groups/' + this.userGroup.id, {name: this.userGroup.name});
  42. }
  43. userPicked(user) {
  44. this.backendSrv.post(`/api/user-groups/${this.$routeParams.id}/members`, {userId: user.id}).then(() => {
  45. this.$scope.$broadcast('user-picker-reset');
  46. this.get();
  47. });
  48. }
  49. }
  50. export interface UserGroup {
  51. id: number;
  52. name: string;
  53. }
  54. export interface User {
  55. id: number;
  56. name: string;
  57. login: string;
  58. email: string;
  59. }
  60. export interface UserGroupMember {
  61. userId: number;
  62. name: string;
  63. }
  64. coreModule.controller('UserGroupDetailsCtrl', UserGroupDetailsCtrl);