user_group_details_ctrl.ts 2.1 KB

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