team_details_ctrl.ts 1.9 KB

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