From 9cbaf0722bf43f982b69fe4bf420a2420f4ac1e0 Mon Sep 17 00:00:00 2001 From: Daniel Lee Date: Wed, 19 Apr 2017 23:02:57 +0200 Subject: [PATCH] WIP: add some TS types --- .../org/partials/edit_user_group.html | 2 +- .../specs/user_group_details_ctrl_specs.ts | 2 +- .../features/org/user_group_details_ctrl.ts | 41 ++++++++++++++----- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/public/app/features/org/partials/edit_user_group.html b/public/app/features/org/partials/edit_user_group.html index 454da4953fa..2aba5ed6c53 100644 --- a/public/app/features/org/partials/edit_user_group.html +++ b/public/app/features/org/partials/edit_user_group.html @@ -26,7 +26,7 @@
Name - +
diff --git a/public/app/features/org/specs/user_group_details_ctrl_specs.ts b/public/app/features/org/specs/user_group_details_ctrl_specs.ts index ee1c32073a4..2dbc64d4368 100644 --- a/public/app/features/org/specs/user_group_details_ctrl_specs.ts +++ b/public/app/features/org/specs/user_group_details_ctrl_specs.ts @@ -21,7 +21,7 @@ var backendSrv = { backendSrv: backendSrv, $routeParams: {id: 1} }); - ctx.ctrl.user = {name: 'login - user@email.com'}; + ctx.ctrl.userName = 'login - user@email.com'; })); describe('when user is chosen to be added to user group', () => { diff --git a/public/app/features/org/user_group_details_ctrl.ts b/public/app/features/org/user_group_details_ctrl.ts index 292b4c24eb4..1a8609ed629 100644 --- a/public/app/features/org/user_group_details_ctrl.ts +++ b/public/app/features/org/user_group_details_ctrl.ts @@ -4,10 +4,10 @@ import coreModule from 'app/core/core_module'; import _ from 'lodash'; export default class UserGroupDetailsCtrl { - userGroup: any; - userGroupMembers = []; - user: any; - usersSearchCache = []; + userGroup: UserGroup; + userGroupMembers: User[] = []; + userName = ''; + usersSearchCache: User[] = []; searchUsers: any; constructor(private $scope, private $http, private backendSrv, private $routeParams) { @@ -15,17 +15,21 @@ export default class UserGroupDetailsCtrl { this.usersSearchCache = []; this.searchUsers = (queryStr, callback) => { if (this.usersSearchCache.length > 0) { - callback(_.map(this.usersSearchCache, (user) => { return user.login + ' - ' + user.email; })); + callback(_.map(this.usersSearchCache, this.userKey)); return; } this.backendSrv.get('/api/users/search?perpage=10&page=1&query=' + queryStr).then(result => { this.usersSearchCache = result.users; - callback(_.map(result.users, (user) => { return user.login + ' - ' + user.email; })); + callback(_.map(result.users, this.userKey)); }); }; } + private userKey(user: User) { + return user.login + ' - ' + user.email; + } + get() { if (this.$routeParams && this.$routeParams.id) { this.backendSrv.get(`/api/user-groups/${this.$routeParams.id}`) @@ -39,7 +43,7 @@ export default class UserGroupDetailsCtrl { } } - removeUserGroupMember(userGroupMember) { + removeUserGroupMember(userGroupMember: UserGroupMember) { this.$scope.appEvent('confirm-modal', { title: 'Remove Member', text: 'Are you sure you want to remove ' + userGroupMember.name + ' from this group?', @@ -51,7 +55,7 @@ export default class UserGroupDetailsCtrl { }); } - removeMemberConfirmed(userGroupMember) { + removeMemberConfirmed(userGroupMember: UserGroupMember) { this.backendSrv.delete(`/api/user-groups/${this.$routeParams.id}/members/${userGroupMember.userId}`) .then(this.get.bind(this)); } @@ -65,14 +69,31 @@ export default class UserGroupDetailsCtrl { addMember() { if (!this.$scope.addMemberForm.$valid) { return; } - const login = this.user.name.split(' - ')[0]; + const login = this.userName.split(' - ')[0]; const memberToAdd = _.find(this.usersSearchCache, ['login', login]); this.backendSrv.post(`/api/user-groups/${this.$routeParams.id}/members`, {userId: memberToAdd.id}).then(() => { - this.user.name = ''; + this.userName = ''; this.get(); }); } } +export interface UserGroup { + id: number; + name: string; +} + +export interface User { + id: number; + name: string; + login: string; + email: string; +} + +export interface UserGroupMember { + userId: number; + name: string; +} + coreModule.controller('UserGroupDetailsCtrl', UserGroupDetailsCtrl);