team_details_ctrl.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import coreModule from 'app/core/core_module';
  2. import config from 'app/core/config';
  3. export default class TeamDetailsCtrl {
  4. team: Team;
  5. teamMembers: User[] = [];
  6. navModel: any;
  7. teamGroups: TeamGroup[] = [];
  8. newGroupId: string;
  9. isMappingsEnabled: boolean;
  10. /** @ngInject **/
  11. constructor(private $scope, private backendSrv, private $routeParams, navModelSrv) {
  12. this.navModel = navModelSrv.getNav('cfg', 'teams', 0);
  13. this.userPicked = this.userPicked.bind(this);
  14. this.get = this.get.bind(this);
  15. this.newGroupId = '';
  16. this.isMappingsEnabled = config.buildInfo.isEnterprise;
  17. this.get();
  18. }
  19. get() {
  20. if (this.$routeParams && this.$routeParams.id) {
  21. this.backendSrv.get(`/api/teams/${this.$routeParams.id}`).then(result => {
  22. this.team = result;
  23. });
  24. this.backendSrv.get(`/api/teams/${this.$routeParams.id}/members`).then(result => {
  25. this.teamMembers = result;
  26. });
  27. if (this.isMappingsEnabled) {
  28. this.backendSrv.get(`/api/teams/${this.$routeParams.id}/groups`).then(result => {
  29. this.teamGroups = result;
  30. });
  31. }
  32. }
  33. }
  34. removeTeamMember(teamMember: TeamMember) {
  35. this.$scope.appEvent('confirm-modal', {
  36. title: 'Remove Member',
  37. text: 'Are you sure you want to remove ' + teamMember.login + ' from this group?',
  38. yesText: 'Remove',
  39. icon: 'fa-warning',
  40. onConfirm: () => {
  41. this.removeMemberConfirmed(teamMember);
  42. },
  43. });
  44. }
  45. removeMemberConfirmed(teamMember: TeamMember) {
  46. this.backendSrv.delete(`/api/teams/${this.$routeParams.id}/members/${teamMember.userId}`).then(this.get);
  47. }
  48. update() {
  49. if (!this.$scope.teamDetailsForm.$valid) {
  50. return;
  51. }
  52. this.backendSrv.put('/api/teams/' + this.team.id, {
  53. name: this.team.name,
  54. email: this.team.email,
  55. });
  56. }
  57. userPicked(user) {
  58. this.backendSrv.post(`/api/teams/${this.$routeParams.id}/members`, { userId: user.id }).then(() => {
  59. this.$scope.$broadcast('user-picker-reset');
  60. this.get();
  61. });
  62. }
  63. addGroup() {
  64. this.backendSrv.post(`/api/teams/${this.$routeParams.id}/groups`, { groupId: this.newGroupId }).then(() => {
  65. this.get();
  66. });
  67. }
  68. removeGroup(group: TeamGroup) {
  69. this.backendSrv.delete(`/api/teams/${this.$routeParams.id}/groups/${group.groupId}`).then(this.get);
  70. }
  71. }
  72. export interface TeamGroup {
  73. groupId: string;
  74. }
  75. export interface Team {
  76. id: number;
  77. name: string;
  78. email: string;
  79. }
  80. export interface User {
  81. id: number;
  82. name: string;
  83. login: string;
  84. email: string;
  85. }
  86. export interface TeamMember {
  87. userId: number;
  88. name: string;
  89. login: string;
  90. }
  91. coreModule.controller('TeamDetailsCtrl', TeamDetailsCtrl);