user_group_details_ctrl.ts 2.0 KB

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