team_details_ctrl.ts 1.9 KB

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