team_details_ctrl.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import coreModule from 'app/core/core_module';
  2. export default class TeamDetailsCtrl {
  3. team: Team;
  4. teamMembers: User[] = [];
  5. navModel: any;
  6. constructor(private $scope, private backendSrv, private $routeParams, navModelSrv) {
  7. this.navModel = navModelSrv.getNav('cfg', 'teams', 0);
  8. this.get();
  9. }
  10. get() {
  11. if (this.$routeParams && this.$routeParams.id) {
  12. this.backendSrv.get(`/api/teams/${this.$routeParams.id}`)
  13. .then(result => {
  14. this.team = result;
  15. });
  16. this.backendSrv.get(`/api/teams/${this.$routeParams.id}/members`)
  17. .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}`)
  35. .then(this.get.bind(this));
  36. }
  37. update() {
  38. if (!this.$scope.teamDetailsForm.$valid) { return; }
  39. this.backendSrv.put('/api/teams/' + this.team.id, {name: this.team.name});
  40. }
  41. userPicked(user) {
  42. this.backendSrv.post(`/api/teams/${this.$routeParams.id}/members`, {userId: user.id}).then(() => {
  43. this.$scope.$broadcast('user-picker-reset');
  44. this.get();
  45. });
  46. }
  47. }
  48. export interface Team {
  49. id: number;
  50. name: string;
  51. }
  52. export interface User {
  53. id: number;
  54. name: string;
  55. login: string;
  56. email: string;
  57. }
  58. export interface TeamMember {
  59. userId: number;
  60. name: string;
  61. login: string;
  62. }
  63. coreModule.controller('TeamDetailsCtrl', TeamDetailsCtrl);