team_details_ctrl.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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();
  10. }
  11. get() {
  12. if (this.$routeParams && this.$routeParams.id) {
  13. this.backendSrv.get(`/api/teams/${this.$routeParams.id}`)
  14. .then(result => {
  15. this.team = result;
  16. });
  17. this.backendSrv.get(`/api/teams/${this.$routeParams.id}/members`)
  18. .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}`)
  36. .then(this.get.bind(this));
  37. }
  38. update() {
  39. if (!this.$scope.teamDetailsForm.$valid) { return; }
  40. this.backendSrv.put('/api/teams/' + this.team.id, {name: this.team.name});
  41. }
  42. userPicked(user) {
  43. this.backendSrv.post(`/api/teams/${this.$routeParams.id}/members`, {userId: user.id}).then(() => {
  44. this.$scope.$broadcast('user-picker-reset');
  45. this.get();
  46. });
  47. }
  48. }
  49. export interface Team {
  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 TeamMember {
  60. userId: number;
  61. name: string;
  62. login: string;
  63. }
  64. coreModule.controller('TeamDetailsCtrl', TeamDetailsCtrl);