team_details_ctrl.ts 1.9 KB

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