mirror of https://github.com/grafana/grafana
parent
48c936e9a9
commit
e32ee9f02e
@ -0,0 +1,38 @@ |
||||
import './adminListUsersCtrl'; |
||||
import './adminListOrgsCtrl'; |
||||
import './adminEditOrgCtrl'; |
||||
import './adminEditUserCtrl'; |
||||
|
||||
import coreModule from 'app/core/core_module'; |
||||
|
||||
class AdminSettingsCtrl { |
||||
|
||||
/** @ngInject **/ |
||||
constructor($scope, backendSrv) { |
||||
|
||||
backendSrv.get('/api/admin/settings').then(function(settings) { |
||||
$scope.settings = settings; |
||||
}); |
||||
|
||||
} |
||||
} |
||||
|
||||
class AdminHomeCtrl { |
||||
/** @ngInject **/ |
||||
constructor() {} |
||||
} |
||||
|
||||
export class AdminStatsCtrl { |
||||
stats: any; |
||||
|
||||
/** @ngInject */ |
||||
constructor(backendSrv: any) { |
||||
backendSrv.get('/api/admin/stats').then(stats => { |
||||
this.stats = stats; |
||||
}); |
||||
} |
||||
} |
||||
|
||||
coreModule.controller('AdminSettingsCtrl', AdminSettingsCtrl); |
||||
coreModule.controller('AdminHomeCtrl', AdminHomeCtrl); |
||||
coreModule.controller('AdminStatsCtrl', AdminStatsCtrl); |
||||
@ -1,18 +0,0 @@ |
||||
///<reference path="../../headers/common.d.ts" />
|
||||
|
||||
import angular from 'angular'; |
||||
|
||||
export class AdminStatsCtrl { |
||||
stats: any; |
||||
|
||||
/** @ngInject */ |
||||
constructor(private backendSrv: any) {} |
||||
|
||||
init() { |
||||
this.backendSrv.get('/api/admin/stats').then(stats => { |
||||
this.stats = stats; |
||||
}); |
||||
} |
||||
} |
||||
|
||||
angular.module('grafana.controllers').controller('AdminStatsCtrl', AdminStatsCtrl); |
||||
@ -1,8 +0,0 @@ |
||||
define([ |
||||
'./adminListUsersCtrl', |
||||
'./adminListOrgsCtrl', |
||||
'./adminEditOrgCtrl', |
||||
'./adminEditUserCtrl', |
||||
'./adminSettingsCtrl', |
||||
'./adminStatsCtrl', |
||||
], function () {}); |
||||
@ -0,0 +1,28 @@ |
||||
<navbar icon="fa fa-fw fa-cogs" title="Admin"> |
||||
</navbar> |
||||
|
||||
<div class="page-container"> |
||||
<div class="page-header"> |
||||
<h1> |
||||
Server Administration |
||||
</h1> |
||||
</div> |
||||
|
||||
<a class="btn btn-inverse" href="admin/users"> |
||||
Manage Users |
||||
</a> |
||||
|
||||
<a class="btn btn-inverse" href="admin/orgs"> |
||||
Manage Organizations |
||||
</a> |
||||
|
||||
<a class="btn btn-inverse" href="admin/settings"> |
||||
View Server Settings |
||||
</a> |
||||
|
||||
<a class="btn btn-inverse" href="admin/stats"> |
||||
View Server Stats |
||||
</a> |
||||
|
||||
</div> |
||||
|
||||
@ -1,150 +1,148 @@ |
||||
<navbar icon="fa fa-fw fa-user" title="Users" title-url="admin/users" subnav="true"> |
||||
<ul class="nav"> |
||||
<li class="active"><a href="admin/users/edit/{{user_id}}">Edit user</a></li> |
||||
</ul> |
||||
<navbar icon="fa fa-fw fa-cogs" title="Admin" title-url="admin"> |
||||
<nav-button title="Users" title-url="admin/users" icon="icon-gf icon-gf-users"></nav-button> |
||||
</navbar> |
||||
|
||||
<div class="page-container"> |
||||
<div class="page"> |
||||
<h2> |
||||
<div class="page-header"> |
||||
<h1> |
||||
Edit User |
||||
</h2> |
||||
|
||||
<form name="userForm"> |
||||
<div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
Name |
||||
</li> |
||||
<li> |
||||
<input type="text" required ng-model="user.name" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
Email |
||||
</li> |
||||
<li> |
||||
<input type="email" ng-model="user.email" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
Username |
||||
</li> |
||||
<li> |
||||
<input type="text" ng-model="user.login" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="update()" ng-show="!createMode">Update</button> |
||||
</form> |
||||
|
||||
<h3> |
||||
Change password |
||||
</h3> |
||||
|
||||
<form name="passwordForm"> |
||||
<div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
New password |
||||
</li> |
||||
<li> |
||||
<input type="password" required ng-minlength="4" ng-model="password" class="input-xxlarge tight-form-input last"> |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="setPassword()">Update</button> |
||||
</form> |
||||
|
||||
<h3> |
||||
Permissions |
||||
</h3> |
||||
</h1> |
||||
</div> |
||||
|
||||
<form name="userForm"> |
||||
<div> |
||||
<div class="tight-form last"> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item last"> |
||||
Grafana Admin |
||||
<input class="cr1" id="permissions.isGrafanaAdmin" type="checkbox" |
||||
ng-model="permissions.isGrafanaAdmin" ng-checked="permissions.isGrafanaAdmin"> |
||||
<label for="permissions.isGrafanaAdmin" class="cr1"></label> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
Name |
||||
</li> |
||||
<li> |
||||
<input type="text" required ng-model="user.name" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="updatePermissions()">Update</button> |
||||
<br> |
||||
</div> |
||||
|
||||
<h3> |
||||
Organizations |
||||
</h3> |
||||
|
||||
<form name="addOrgForm"> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 160px"> |
||||
Add organization |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
Email |
||||
</li> |
||||
<li> |
||||
<input type="text" ng-model="newOrg.name" bs-typeahead="searchOrgs" |
||||
required class="input-xlarge tight-form-input" placeholder="organization name"> |
||||
<input type="email" ng-model="user.email" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
<li class="tight-form-item"> |
||||
Role |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
Username |
||||
</li> |
||||
<li> |
||||
<select type="text" ng-model="newOrg.role" class="input-small tight-form-input" ng-options="f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']"> |
||||
</select> |
||||
<input type="text" ng-model="user.login" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="update()" ng-show="!createMode">Update</button> |
||||
</form> |
||||
|
||||
<h3> |
||||
Change password |
||||
</h3> |
||||
|
||||
<form name="passwordForm"> |
||||
<div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
New password |
||||
</li> |
||||
<li> |
||||
<button class="btn btn-success tight-form-btn" ng-click="addOrgUser()">Add</button> |
||||
<input type="password" required ng-minlength="4" ng-model="password" class="input-xxlarge tight-form-input last"> |
||||
</li> |
||||
<div class="clearfix"></div> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
|
||||
<table class="grafana-options-table form-inline"> |
||||
<tr> |
||||
<th>Name</th> |
||||
<th>Role</th> |
||||
<th></th> |
||||
</tr> |
||||
<tr ng-repeat="org in orgs"> |
||||
<td> |
||||
{{org.name}} <span class="label label-info" ng-show="org.orgId === user.orgId">Current</span> |
||||
</td> |
||||
<td> |
||||
<select type="text" ng-model="org.role" class="input-small" ng-options="f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']" ng-change="updateOrgUser(org)"> |
||||
</select> |
||||
</td> |
||||
<td style="width: 1%"> |
||||
<a ng-click="removeOrgUser(org)" class="btn btn-danger btn-mini"> |
||||
<i class="fa fa-remove"></i> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
</table> |
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="setPassword()">Update</button> |
||||
</form> |
||||
|
||||
<h3> |
||||
Permissions |
||||
</h3> |
||||
|
||||
<div> |
||||
<div class="tight-form last"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item last"> |
||||
Grafana Admin |
||||
<input class="cr1" id="permissions.isGrafanaAdmin" type="checkbox" |
||||
ng-model="permissions.isGrafanaAdmin" ng-checked="permissions.isGrafanaAdmin"> |
||||
<label for="permissions.isGrafanaAdmin" class="cr1"></label> |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="updatePermissions()">Update</button> |
||||
<br> |
||||
</div> |
||||
|
||||
<h3> |
||||
Organizations |
||||
</h3> |
||||
|
||||
<form name="addOrgForm"> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 160px"> |
||||
Add organization |
||||
</li> |
||||
<li> |
||||
<input type="text" ng-model="newOrg.name" bs-typeahead="searchOrgs" |
||||
required class="input-xlarge tight-form-input" placeholder="organization name"> |
||||
</li> |
||||
<li class="tight-form-item"> |
||||
Role |
||||
</li> |
||||
<li> |
||||
<select type="text" ng-model="newOrg.role" class="input-small tight-form-input" ng-options="f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']"> |
||||
</select> |
||||
</li> |
||||
<li> |
||||
<button class="btn btn-success tight-form-btn" ng-click="addOrgUser()">Add</button> |
||||
</li> |
||||
<div class="clearfix"></div> |
||||
</ul> |
||||
</div> |
||||
</form> |
||||
|
||||
<table class="grafana-options-table form-inline"> |
||||
<tr> |
||||
<th>Name</th> |
||||
<th>Role</th> |
||||
<th></th> |
||||
</tr> |
||||
<tr ng-repeat="org in orgs"> |
||||
<td> |
||||
{{org.name}} <span class="label label-info" ng-show="org.orgId === user.orgId">Current</span> |
||||
</td> |
||||
<td> |
||||
<select type="text" ng-model="org.role" class="input-small" ng-options="f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']" ng-change="updateOrgUser(org)"> |
||||
</select> |
||||
</td> |
||||
<td style="width: 1%"> |
||||
<a ng-click="removeOrgUser(org)" class="btn btn-danger btn-mini"> |
||||
<i class="fa fa-remove"></i> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
</table> |
||||
|
||||
</div> |
||||
|
||||
@ -1,65 +1,63 @@ |
||||
<navbar icon="fa fa-fw fa-user" title="Users" title-url="admin/users" subnav="true"> |
||||
<ul class="nav"> |
||||
<li class="active"><a href="admin/users/create">Add user</a></li> |
||||
</ul> |
||||
<navbar icon="fa fa-fw fa-cogs" title="Admin" title-url="admin"> |
||||
<nav-button title="Users" title-url="admin/users" icon="icon-gf icon-gf-users"></nav-button> |
||||
</navbar> |
||||
|
||||
<div class="page-container"> |
||||
<div class="page"> |
||||
<h2> |
||||
<div class="page-header"> |
||||
<h1> |
||||
Add new user |
||||
</h2> |
||||
</h1> |
||||
</div> |
||||
|
||||
<form name="userForm"> |
||||
<div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Name</strong> |
||||
</li> |
||||
<li> |
||||
<input type="text" required ng-model="user.name" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Email</strong> |
||||
</li> |
||||
<li> |
||||
<input type="email" ng-model="user.email" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Username</strong> |
||||
</li> |
||||
<li> |
||||
<input type="text" ng-model="user.login" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Password</strong> |
||||
</li> |
||||
<li> |
||||
<input type="password" required ng-model="user.password" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<form name="userForm"> |
||||
<div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Name</strong> |
||||
</li> |
||||
<li> |
||||
<input type="text" required ng-model="user.name" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Email</strong> |
||||
</li> |
||||
<li> |
||||
<input type="email" ng-model="user.email" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Username</strong> |
||||
</li> |
||||
<li> |
||||
<input type="text" ng-model="user.login" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
<div class="tight-form"> |
||||
<ul class="tight-form-list"> |
||||
<li class="tight-form-item" style="width: 100px"> |
||||
<strong>Password</strong> |
||||
</li> |
||||
<li> |
||||
<input type="password" required ng-model="user.password" class="input-xxlarge tight-form-input last" > |
||||
</li> |
||||
</ul> |
||||
<div class="clearfix"></div> |
||||
</div> |
||||
</div> |
||||
|
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="create()">Create</button> |
||||
</form> |
||||
</div> |
||||
<br> |
||||
<button type="submit" class="pull-right btn btn-success" ng-click="create()">Create</button> |
||||
</form> |
||||
</div> |
||||
|
||||
@ -1,35 +1,37 @@ |
||||
<navbar icon="fa fa-fw fa-users" title="Organizations"> |
||||
<navbar icon="fa fa-fw fa-cogs" title="Admin" title-url="admin"> |
||||
<nav-button title="Orgs" title-url="admin/orgs" icon="icon-gf icon-gf-users"></nav-button> |
||||
</navbar> |
||||
|
||||
<div class="page-container"> |
||||
<div class="page-wide"> |
||||
<h2> |
||||
<div class="page-header"> |
||||
<h1> |
||||
Organizations |
||||
</h2> |
||||
<table class="filter-table form-inline"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>Name</th> |
||||
<th></th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr ng-repeat="org in orgs"> |
||||
<td>{{org.id}}</td> |
||||
<td>{{org.name}}</td> |
||||
<td class="text-right"> |
||||
<a href="admin/orgs/edit/{{org.id}}" class="btn btn-inverse btn-small"> |
||||
<i class="fa fa-edit"></i> |
||||
Edit |
||||
</a> |
||||
|
||||
<a ng-click="deleteOrg(org)" class="btn btn-danger btn-small"> |
||||
<i class="fa fa-remove"></i> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</h1> |
||||
</div> |
||||
|
||||
<table class="filter-table form-inline"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>Name</th> |
||||
<th></th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr ng-repeat="org in orgs"> |
||||
<td>{{org.id}}</td> |
||||
<td>{{org.name}}</td> |
||||
<td class="text-right"> |
||||
<a href="admin/orgs/edit/{{org.id}}" class="btn btn-inverse btn-small"> |
||||
<i class="fa fa-edit"></i> |
||||
Edit |
||||
</a> |
||||
|
||||
<a ng-click="deleteOrg(org)" class="btn btn-danger btn-small"> |
||||
<i class="fa fa-remove"></i> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
@ -1,57 +1,57 @@ |
||||
<navbar icon="fa fa-fw fa-bar-chart" title="Stats"> |
||||
<navbar icon="fa fa-fw fa-cogs" title="Admin" title-url="admin"> |
||||
</navbar> |
||||
|
||||
<div class="page-container"> |
||||
<div class="page-wide" ng-init="ctrl.init()"> |
||||
<div class="page-header"> |
||||
<h1> |
||||
Overview |
||||
Stats |
||||
</h1> |
||||
|
||||
<table class="filter-table form-inline"> |
||||
<thead> |
||||
<tr> |
||||
<th>Name</th> |
||||
<th>Value</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr> |
||||
<td>Total dashboards</td> |
||||
<td>{{ctrl.stats.dashboard_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total users</td> |
||||
<td>{{ctrl.stats.user_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total grafana admins</td> |
||||
<td>{{ctrl.stats.grafana_admin_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total organizations</td> |
||||
<td>{{ctrl.stats.org_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total datasources</td> |
||||
<td>{{ctrl.stats.data_source_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total playlists</td> |
||||
<td>{{ctrl.stats.playlist_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total snapshots</td> |
||||
<td>{{ctrl.stats.db_snapshot_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total dashboard tags</td> |
||||
<td>{{ctrl.stats.db_tag_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total starred dashboards</td> |
||||
<td>{{ctrl.stats.starred_db_count}}</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<table class="filter-table form-inline"> |
||||
<thead> |
||||
<tr> |
||||
<th>Name</th> |
||||
<th>Value</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr> |
||||
<td>Total dashboards</td> |
||||
<td>{{ctrl.stats.dashboard_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total users</td> |
||||
<td>{{ctrl.stats.user_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total grafana admins</td> |
||||
<td>{{ctrl.stats.grafana_admin_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total organizations</td> |
||||
<td>{{ctrl.stats.org_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total datasources</td> |
||||
<td>{{ctrl.stats.data_source_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total playlists</td> |
||||
<td>{{ctrl.stats.playlist_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total snapshots</td> |
||||
<td>{{ctrl.stats.db_snapshot_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total dashboard tags</td> |
||||
<td>{{ctrl.stats.db_tag_count}}</td> |
||||
</tr> |
||||
<tr> |
||||
<td>Total starred dashboards</td> |
||||
<td>{{ctrl.stats.starred_db_count}}</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
@ -1,45 +1,46 @@ |
||||
<navbar icon="fa fa-fw fa-user" title="Users" title-url="admin/users"> |
||||
<navbar icon="fa fa-fw fa-cogs" title="Admin" title-url="admin"> |
||||
<nav-button title="Users" title-url="admin/users" icon="icon-gf icon-gf-users"></nav-button> |
||||
</navbar> |
||||
|
||||
<div class="page-container"> |
||||
<div class="page-wide"> |
||||
<a class="btn btn-inverse pull-right" href="admin/users/create"> |
||||
<div class="page-header"> |
||||
<h1>Users</h1> |
||||
|
||||
<a class="btn btn-success" href="admin/users/create"> |
||||
<i class="fa fa-plus"></i> |
||||
Add new user |
||||
</a> |
||||
|
||||
<h1>Users</h1> |
||||
|
||||
<table class="filter-table form-inline"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>Name</th> |
||||
<th>Login</th> |
||||
<th>Email</th> |
||||
<th style="white-space: nowrap">Grafana Admin</th> |
||||
<th></th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr ng-repeat="user in users"> |
||||
<td>{{user.id}}</td> |
||||
<td>{{user.name}}</td> |
||||
<td>{{user.login}}</td> |
||||
<td>{{user.email}}</td> |
||||
<td>{{user.isAdmin}}</td> |
||||
<td class="text-right"> |
||||
<a href="admin/users/edit/{{user.id}}" class="btn btn-inverse btn-small"> |
||||
<i class="fa fa-edit"></i> |
||||
Edit |
||||
</a> |
||||
|
||||
<a ng-click="deleteUser(user)" class="btn btn-danger btn-small"> |
||||
<i class="fa fa-remove"></i> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
<table class="filter-table form-inline"> |
||||
<thead> |
||||
<tr> |
||||
<th>Id</th> |
||||
<th>Name</th> |
||||
<th>Login</th> |
||||
<th>Email</th> |
||||
<th style="white-space: nowrap">Grafana Admin</th> |
||||
<th></th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<tr ng-repeat="user in users"> |
||||
<td>{{user.id}}</td> |
||||
<td>{{user.name}}</td> |
||||
<td>{{user.login}}</td> |
||||
<td>{{user.email}}</td> |
||||
<td>{{user.isAdmin}}</td> |
||||
<td class="text-right"> |
||||
<a href="admin/users/edit/{{user.id}}" class="btn btn-inverse btn-small"> |
||||
<i class="fa fa-edit"></i> |
||||
Edit |
||||
</a> |
||||
|
||||
<a ng-click="deleteUser(user)" class="btn btn-danger btn-small"> |
||||
<i class="fa fa-remove"></i> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
|
||||
Loading…
Reference in new issue