2017-11-30 09:35:27 -06:00
< page-header model = "ctrl.navModel" > < / page-header >
2017-08-18 07:49:04 -05:00
2017-11-30 09:35:27 -06:00
< div class = "page-container page-body" >
< div class = "page-action-bar" >
2017-12-13 06:16:44 -06:00
< div class = "gf-form" >
< label class = "gf-form-label" > Search< / label >
< input type = "text" class = "gf-form-input width-20" ng-model = "ctrl.searchQuery" ng-change = "ctrl.onQueryUpdated()" give-focus = "true" placeholder = "Filter by username or email" / >
< / div >
2017-11-30 09:35:27 -06:00
< div class = "page-action-bar__spacer" > < / div >
2017-12-13 06:16:44 -06:00
< button class = "btn btn-inverse" ng-show = "ctrl.pendingInvites.length" ng-click = "ctrl.showInvites = true" >
2017-11-30 09:35:27 -06:00
Pending Invites ({{ctrl.pendingInvites.length}})
< / button >
2017-12-13 06:16:44 -06:00
< a class = "btn btn-success" href = "org/users/invite" ng-show = "ctrl.canInvite" >
2017-11-30 09:35:27 -06:00
< i class = "fa fa-plus" > < / i >
2017-12-13 06:16:44 -06:00
< span > Invite< / span >
2017-12-12 13:15:26 -06:00
< / a >
2017-12-13 06:16:44 -06:00
< a class = "btn btn-success" ng-href = "{{ctrl.externalUserMngLinkUrl}}" target = "_blank" ng-if = "ctrl.externalUserMngLinkUrl" >
2017-11-30 09:35:27 -06:00
< i class = "fa fa-external-link-square" > < / i >
2017-12-13 06:16:44 -06:00
{{ctrl.externalUserMngLinkName}}
2017-11-30 09:35:27 -06:00
< / a >
< / div >
2016-03-02 09:56:16 -06:00
2017-07-31 07:39:33 -05:00
< div class = "grafana-info-box" ng-if = "ctrl.externalUserMngInfo" >
< span ng-bind-html = "ctrl.externalUserMngInfo" > < / span >
< / div >
2015-02-08 03:23:35 -06:00
2017-12-13 06:16:44 -06:00
< div ng-hide = "ctrl.showInvites" >
2017-07-31 07:39:33 -05:00
< table class = "filter-table form-inline" >
< thead >
< tr >
2017-08-18 01:17:35 -05:00
< th > < / th >
2017-07-31 07:39:33 -05:00
< th > Login< / th >
< th > Email< / th >
2017-11-30 09:35:27 -06:00
< th >
Seen
< tip > Time since user was seen using Grafana< / tip >
< / th >
2017-07-31 07:39:33 -05:00
< th > Role< / th >
< th style = "width: 34px;" > < / th >
< / tr >
< / thead >
< tr ng-repeat = "user in ctrl.users" >
2017-08-18 01:34:10 -05:00
< td class = "width-4 text-center" >
2017-11-30 09:35:27 -06:00
< img class = "filter-table__avatar" ng-src = "{{user.avatarUrl}}" > < / img >
< / td >
2017-07-31 07:39:33 -05:00
< td > {{user.login}}< / td >
< td > < span class = "ellipsis" > {{user.email}}< / span > < / td >
2017-11-30 09:35:27 -06:00
< td > {{user.lastSeenAtAge}}< / td >
2017-07-31 07:39:33 -05:00
< td >
2017-12-13 08:05:43 -06:00
< div class = "gf-form-select-wrapper width-12" >
2017-11-30 09:35:27 -06:00
< select type = "text" ng-model = "user.role" class = "gf-form-input" ng-options = "f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']" ng-change = "ctrl.updateOrgUser(user)" >
< / select >
< / div >
2017-07-31 07:39:33 -05:00
< / td >
< td >
< a ng-click = "ctrl.removeUser(user)" class = "btn btn-danger btn-mini" >
< i class = "fa fa-remove" > < / i >
< / a >
< / td >
< / tr >
< / table >
< / div >
2016-02-18 07:44:36 -06:00
2017-12-13 06:16:44 -06:00
< div ng-if = "ctrl.showInvites" >
2017-07-31 07:39:33 -05:00
< table class = "filter-table form-inline" >
< thead >
< tr >
< th > Email< / th >
< th > Name< / th >
< th > < / th >
2017-12-13 06:16:44 -06:00
< th style = "width: 34px;" > < / th >
2017-07-31 07:39:33 -05:00
< / tr >
< / thead >
2017-12-13 06:16:44 -06:00
< tr ng-repeat = "invite in ctrl.pendingInvites" >
< td > {{invite.email}}< / td >
< td > {{invite.name}}< / td >
< td class = "text-right" >
< button class = "btn btn-inverse btn-mini" clipboard-button = "ctrl.getInviteUrl(invite)" ng-click = "ctrl.copyInviteToClipboard($event)" >
< i class = "fa fa-clipboard" > < / i > Copy Invite
< / button >
< / td >
< td >
< button class = "btn btn-danger btn-mini" ng-click = "ctrl.revokeInvite(invite, $event)" >
< i class = "fa fa-remove" > < / i >
< / button >
< / td >
< / tr >
2017-07-31 07:39:33 -05:00
< / table >
< / div >
2015-01-15 12:14:07 -06:00
< / div >