team_details_ctrl.ts 1.9 KB

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