From c260c319eede99513e234f0e16391706e51f1552 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Thu, 21 Jan 2016 01:48:29 -0800 Subject: [PATCH 1/9] Started Grafana stats poc --- .../app/core/components/sidemenu/sidemenu.ts | 7 +++ public/app/core/routes/all.js | 4 ++ public/app/features/admin/adminStatsCtrl.js | 24 +++++++++ public/app/features/admin/all.js | 1 + public/app/features/admin/partials/stats.html | 53 +++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 public/app/features/admin/adminStatsCtrl.js create mode 100644 public/app/features/admin/partials/stats.html diff --git a/public/app/core/components/sidemenu/sidemenu.ts b/public/app/core/components/sidemenu/sidemenu.ts index d2a640c1345..8f0c57bfade 100644 --- a/public/app/core/components/sidemenu/sidemenu.ts +++ b/public/app/core/components/sidemenu/sidemenu.ts @@ -107,6 +107,12 @@ export class SideMenuCtrl { url: this.getUrl("/admin/settings"), }); + this.mainLinks.push({ + text: "Grafana stats", + icon: "fa fa-fw fa-bar-chart", + url: this.getUrl("/admin/stats"), + }); + this.mainLinks.push({ text: "Global Users", icon: "fa fa-fw fa-user", @@ -118,6 +124,7 @@ export class SideMenuCtrl { icon: "fa fa-fw fa-users", url: this.getUrl("/admin/orgs"), }); + } updateMenu() { diff --git a/public/app/core/routes/all.js b/public/app/core/routes/all.js index cc4d73ef708..bc71a63a094 100644 --- a/public/app/core/routes/all.js +++ b/public/app/core/routes/all.js @@ -112,6 +112,10 @@ define([ templateUrl: 'app/features/admin/partials/edit_org.html', controller : 'AdminEditOrgCtrl', }) + .when('/admin/stats', { + templateUrl: 'app/features/admin/partials/stats.html', + controller : 'AdminStatsCtrl', + }) .when('/login', { templateUrl: 'app/partials/login.html', controller : 'LoginCtrl', diff --git a/public/app/features/admin/adminStatsCtrl.js b/public/app/features/admin/adminStatsCtrl.js new file mode 100644 index 00000000000..94b40b59591 --- /dev/null +++ b/public/app/features/admin/adminStatsCtrl.js @@ -0,0 +1,24 @@ +define([ + 'angular', +], +function (angular) { + 'use strict'; + + var module = angular.module('grafana.controllers'); + + module.controller('AdminStatsCtrl', function($scope) { + + $scope.init = function() { + $scope.getStats(); + }; + + $scope.getStats = function() { +// backendSrv.get('/api/admin/stats').then(function(stats) { +// $scope.stats = stats; +// }); + }; + + $scope.init(); + + }); +}); diff --git a/public/app/features/admin/all.js b/public/app/features/admin/all.js index 14bff249b0e..786210f064f 100644 --- a/public/app/features/admin/all.js +++ b/public/app/features/admin/all.js @@ -4,4 +4,5 @@ define([ './adminEditOrgCtrl', './adminEditUserCtrl', './adminSettingsCtrl', + './adminStatsCtrl', ], function () {}); diff --git a/public/app/features/admin/partials/stats.html b/public/app/features/admin/partials/stats.html new file mode 100644 index 00000000000..048be83c83e --- /dev/null +++ b/public/app/features/admin/partials/stats.html @@ -0,0 +1,53 @@ + + + +
+
+

+ Stats +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameValue
Total dashboards213
Total users97
Total organizations4
Total playlists12
Total snapshots64
Total dashboard tags15
Total starred dashboards131
Total panels2739
+
+
From c7fae5386daf060d848bc840a33cbe60aef1457d Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Sun, 24 Jan 2016 11:01:33 -0800 Subject: [PATCH 2/9] Added backend API for stats --- pkg/api/{admin_settings.go => admin.go} | 14 ++++++++ pkg/api/api.go | 2 ++ pkg/models/stats.go | 15 ++++++++ pkg/services/sqlstore/stats.go | 47 +++++++++++++++++++++++++ 4 files changed, 78 insertions(+) rename pkg/api/{admin_settings.go => admin.go} (65%) diff --git a/pkg/api/admin_settings.go b/pkg/api/admin.go similarity index 65% rename from pkg/api/admin_settings.go rename to pkg/api/admin.go index 1f800cfe558..1264cfa12eb 100644 --- a/pkg/api/admin_settings.go +++ b/pkg/api/admin.go @@ -5,6 +5,8 @@ import ( "github.com/grafana/grafana/pkg/middleware" "github.com/grafana/grafana/pkg/setting" + "github.com/grafana/grafana/pkg/bus" + m "github.com/grafana/grafana/pkg/models" ) func AdminGetSettings(c *middleware.Context) { @@ -27,3 +29,15 @@ func AdminGetSettings(c *middleware.Context) { c.JSON(200, settings) } + +func AdminGetStats(c *middleware.Context) { + + statsQuery := m.GetAdminStatsQuery{} + + if err := bus.Dispatch(&statsQuery); err != nil { + c.JsonApiErr(500, "Failed to get admin stats from database", err) + return + } + + c.JSON(200, statsQuery.Result) +} diff --git a/pkg/api/api.go b/pkg/api/api.go index ea434ed71da..7a4fc684497 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -40,6 +40,7 @@ func Register(r *macaron.Macaron) { r.Get("/admin/users/edit/:id", reqGrafanaAdmin, Index) r.Get("/admin/orgs", reqGrafanaAdmin, Index) r.Get("/admin/orgs/edit/:id", reqGrafanaAdmin, Index) + r.Get("/admin/stats", reqGrafanaAdmin, Index) r.Get("/apps", reqSignedIn, Index) r.Get("/apps/edit/*", reqSignedIn, Index) @@ -210,6 +211,7 @@ func Register(r *macaron.Macaron) { r.Delete("/users/:id", AdminDeleteUser) r.Get("/users/:id/quotas", wrap(GetUserQuotas)) r.Put("/users/:id/quotas/:target", bind(m.UpdateUserQuotaCmd{}), wrap(UpdateUserQuota)) + r.Get("/stats", AdminGetStats) }, reqGrafanaAdmin) // rendering diff --git a/pkg/models/stats.go b/pkg/models/stats.go index 6a060137ac7..8fd7614ffd2 100644 --- a/pkg/models/stats.go +++ b/pkg/models/stats.go @@ -18,3 +18,18 @@ type GetSystemStatsQuery struct { type GetDataSourceStatsQuery struct { Result []*DataSourceStats } + +type AdminStats struct { + UserCount int + OrgCount int + DashboardCount int + DBSnapshotCount int + DBTagCount int + DataSourceCount int + PlaylistCount int + StarredDBCount int +} + +type GetAdminStatsQuery struct { + Result *AdminStats +} diff --git a/pkg/services/sqlstore/stats.go b/pkg/services/sqlstore/stats.go index 044aa185f19..c57128bc76a 100644 --- a/pkg/services/sqlstore/stats.go +++ b/pkg/services/sqlstore/stats.go @@ -8,6 +8,7 @@ import ( func init() { bus.AddHandler("sql", GetSystemStats) bus.AddHandler("sql", GetDataSourceStats) + bus.AddHandler("sql", GetAdminStats) } func GetDataSourceStats(query *m.GetDataSourceStatsQuery) error { @@ -46,3 +47,49 @@ func GetSystemStats(query *m.GetSystemStatsQuery) error { query.Result = &stats return err } + +func GetAdminStats(query *m.GetAdminStatsQuery) error { + var rawSql = `SELECT + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("user") + ` + ) AS user_count, + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("org") + ` + ) AS org_count, + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("dashboard") + ` + ) AS dashboard_count, + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("dashboard_snapshot") + ` + ) AS db_snapshot_count, + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("dashboard_tag") + ` + ) AS db_tag_count, + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("data_source") + ` + ) AS datasource_count, + ( + SELECT COUNT(*) + FROM ` + dialect.Quote("playlist") + ` + ) AS playlist_count, + ( + SELECT DISTINCT(dashboard_id) + FROM ` + dialect.Quote("star") + ` + ) AS starred_db_count + ` + + var stats m.AdminStats + _, err := x.Sql(rawSql).Get(&stats) + if err != nil { + return err + } + + query.Result = &stats + return err +} From da67afa51ede6e72ac61f7e499d0a704390c11cb Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Sun, 24 Jan 2016 21:18:17 -0800 Subject: [PATCH 3/9] Fixed api bugs, stats endpoint working --- pkg/api/admin.go | 18 +++++++++--------- pkg/api/api.go | 4 ++-- pkg/models/stats.go | 18 +++++++++--------- pkg/services/sqlstore/stats.go | 22 +++++++++++----------- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/pkg/api/admin.go b/pkg/api/admin.go index 1264cfa12eb..d7f5a240416 100644 --- a/pkg/api/admin.go +++ b/pkg/api/admin.go @@ -3,10 +3,10 @@ package api import ( "strings" + "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/middleware" + m "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/setting" - "github.com/grafana/grafana/pkg/bus" - m "github.com/grafana/grafana/pkg/models" ) func AdminGetSettings(c *middleware.Context) { @@ -32,12 +32,12 @@ func AdminGetSettings(c *middleware.Context) { func AdminGetStats(c *middleware.Context) { - statsQuery := m.GetAdminStatsQuery{} - - if err := bus.Dispatch(&statsQuery); err != nil { - c.JsonApiErr(500, "Failed to get admin stats from database", err) - return - } + statsQuery := m.GetAdminStatsQuery{} - c.JSON(200, statsQuery.Result) + if err := bus.Dispatch(&statsQuery); err != nil { + c.JsonApiErr(500, "Failed to get admin stats from database", err) + return + } + + c.JSON(200, statsQuery.Result) } diff --git a/pkg/api/api.go b/pkg/api/api.go index 7a4fc684497..32ccd5dc793 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -40,7 +40,7 @@ func Register(r *macaron.Macaron) { r.Get("/admin/users/edit/:id", reqGrafanaAdmin, Index) r.Get("/admin/orgs", reqGrafanaAdmin, Index) r.Get("/admin/orgs/edit/:id", reqGrafanaAdmin, Index) - r.Get("/admin/stats", reqGrafanaAdmin, Index) + r.Get("/admin/stats", reqGrafanaAdmin, Index) r.Get("/apps", reqSignedIn, Index) r.Get("/apps/edit/*", reqSignedIn, Index) @@ -211,7 +211,7 @@ func Register(r *macaron.Macaron) { r.Delete("/users/:id", AdminDeleteUser) r.Get("/users/:id/quotas", wrap(GetUserQuotas)) r.Put("/users/:id/quotas/:target", bind(m.UpdateUserQuotaCmd{}), wrap(UpdateUserQuota)) - r.Get("/stats", AdminGetStats) + r.Get("/stats", AdminGetStats) }, reqGrafanaAdmin) // rendering diff --git a/pkg/models/stats.go b/pkg/models/stats.go index 8fd7614ffd2..6d8618d6ddf 100644 --- a/pkg/models/stats.go +++ b/pkg/models/stats.go @@ -20,16 +20,16 @@ type GetDataSourceStatsQuery struct { } type AdminStats struct { - UserCount int - OrgCount int - DashboardCount int - DBSnapshotCount int - DBTagCount int - DataSourceCount int - PlaylistCount int - StarredDBCount int + UserCount int `json:"user_count"` + OrgCount int `json:"org_count"` + DashboardCount int `json:"dashboard_count"` + DbSnapshotCount int `json:"db_snapshot_count"` + DbTagCount int `json:"db_tag_count"` + DataSourceCount int `json:"data_source_count"` + PlaylistCount int `json:"playlist_count"` + StarredDbCount int `json:"starred_db_count"` } type GetAdminStatsQuery struct { - Result *AdminStats + Result *AdminStats } diff --git a/pkg/services/sqlstore/stats.go b/pkg/services/sqlstore/stats.go index c57128bc76a..3c9325fa149 100644 --- a/pkg/services/sqlstore/stats.go +++ b/pkg/services/sqlstore/stats.go @@ -8,7 +8,7 @@ import ( func init() { bus.AddHandler("sql", GetSystemStats) bus.AddHandler("sql", GetDataSourceStats) - bus.AddHandler("sql", GetAdminStats) + bus.AddHandler("sql", GetAdminStats) } func GetDataSourceStats(query *m.GetDataSourceStatsQuery) error { @@ -49,7 +49,7 @@ func GetSystemStats(query *m.GetSystemStatsQuery) error { } func GetAdminStats(query *m.GetAdminStatsQuery) error { - var rawSql = `SELECT + var rawSql = `SELECT ( SELECT COUNT(*) FROM ` + dialect.Quote("user") + ` @@ -73,23 +73,23 @@ func GetAdminStats(query *m.GetAdminStatsQuery) error { ( SELECT COUNT(*) FROM ` + dialect.Quote("data_source") + ` - ) AS datasource_count, + ) AS data_source_count, ( SELECT COUNT(*) FROM ` + dialect.Quote("playlist") + ` ) AS playlist_count, ( - SELECT DISTINCT(dashboard_id) + SELECT COUNT (DISTINCT ` + dialect.Quote("dashboard_id") + ` ) FROM ` + dialect.Quote("star") + ` ) AS starred_db_count ` - var stats m.AdminStats - _, err := x.Sql(rawSql).Get(&stats) - if err != nil { - return err - } + var stats m.AdminStats + _, err := x.Sql(rawSql).Get(&stats) + if err != nil { + return err + } - query.Result = &stats - return err + query.Result = &stats + return err } From 4c12703e0c756af1b9ec00ac8da1f4d23f11e11c Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Sun, 24 Jan 2016 21:39:30 -0800 Subject: [PATCH 4/9] Integrated angularjs with go api --- public/app/features/admin/adminStatsCtrl.js | 8 +++---- public/app/features/admin/partials/stats.html | 22 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/public/app/features/admin/adminStatsCtrl.js b/public/app/features/admin/adminStatsCtrl.js index 94b40b59591..217429d1253 100644 --- a/public/app/features/admin/adminStatsCtrl.js +++ b/public/app/features/admin/adminStatsCtrl.js @@ -6,16 +6,16 @@ function (angular) { var module = angular.module('grafana.controllers'); - module.controller('AdminStatsCtrl', function($scope) { + module.controller('AdminStatsCtrl', function($scope, backendSrv) { $scope.init = function() { $scope.getStats(); }; $scope.getStats = function() { -// backendSrv.get('/api/admin/stats').then(function(stats) { -// $scope.stats = stats; -// }); + backendSrv.get('/api/admin/stats').then(function(stats) { + $scope.stats = stats; + }); }; $scope.init(); diff --git a/public/app/features/admin/partials/stats.html b/public/app/features/admin/partials/stats.html index 048be83c83e..0df6d251f5c 100644 --- a/public/app/features/admin/partials/stats.html +++ b/public/app/features/admin/partials/stats.html @@ -17,35 +17,35 @@ Total dashboards - 213 + {{stats.dashboard_count}} Total users - 97 + {{stats.user_count}} Total organizations - 4 + {{stats.org_count}} + + + Total datasources + {{stats.data_source_count}} Total playlists - 12 + {{stats.playlist_count}} Total snapshots - 64 + {{stats.db_snapshot_count}} Total dashboard tags - 15 + {{stats.db_tag_count}} Total starred dashboards - 131 - - - Total panels - 2739 + {{stats.starred_db_count}} From a621c0d27356321da6e71d766a24aa583dfc1320 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 25 Jan 2016 00:02:05 -0800 Subject: [PATCH 5/9] Added docs for stats api --- docs/sources/reference/http_api.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/docs/sources/reference/http_api.md b/docs/sources/reference/http_api.md index 7cdd8a872d5..a7ae066a8db 100644 --- a/docs/sources/reference/http_api.md +++ b/docs/sources/reference/http_api.md @@ -1422,6 +1422,33 @@ Keys: } } +### Grafana Stats + +`GET /api/admin/stats` + +**Example Request**: + + GET /api/admin/stats + Accept: application/json + Content-Type: application/json + Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk + +**Example Response**: + + HTTP/1.1 200 + Content-Type: application/json + + { + "user_count":2, + "org_count":1, + "dashboard_count":4, + "db_snapshot_count":2, + "db_tag_count":6, + "data_source_count":1, + "playlist_count":1, + "starred_db_count":2 + } + ### Global Users `POST /api/admin/users` From 2190392e052221905eba1b6f164ddc9574d92c9a Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 25 Jan 2016 00:39:31 -0800 Subject: [PATCH 6/9] Added grafana_admins count --- docs/sources/reference/http_api.md | 3 ++- pkg/models/stats.go | 17 +++++++++-------- pkg/services/sqlstore/stats.go | 6 +++++- public/app/features/admin/partials/stats.html | 11 +++++++++-- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docs/sources/reference/http_api.md b/docs/sources/reference/http_api.md index a7ae066a8db..4b0dff6c4b6 100644 --- a/docs/sources/reference/http_api.md +++ b/docs/sources/reference/http_api.md @@ -1446,7 +1446,8 @@ Keys: "db_tag_count":6, "data_source_count":1, "playlist_count":1, - "starred_db_count":2 + "starred_db_count":2, + "grafana_admin_count":2 } ### Global Users diff --git a/pkg/models/stats.go b/pkg/models/stats.go index 6d8618d6ddf..4b1d863d1d2 100644 --- a/pkg/models/stats.go +++ b/pkg/models/stats.go @@ -20,14 +20,15 @@ type GetDataSourceStatsQuery struct { } type AdminStats struct { - UserCount int `json:"user_count"` - OrgCount int `json:"org_count"` - DashboardCount int `json:"dashboard_count"` - DbSnapshotCount int `json:"db_snapshot_count"` - DbTagCount int `json:"db_tag_count"` - DataSourceCount int `json:"data_source_count"` - PlaylistCount int `json:"playlist_count"` - StarredDbCount int `json:"starred_db_count"` + UserCount int `json:"user_count"` + OrgCount int `json:"org_count"` + DashboardCount int `json:"dashboard_count"` + DbSnapshotCount int `json:"db_snapshot_count"` + DbTagCount int `json:"db_tag_count"` + DataSourceCount int `json:"data_source_count"` + PlaylistCount int `json:"playlist_count"` + StarredDbCount int `json:"starred_db_count"` + GrafanaAdminCount int `json:"grafana_admin_count"` } type GetAdminStatsQuery struct { diff --git a/pkg/services/sqlstore/stats.go b/pkg/services/sqlstore/stats.go index 3c9325fa149..ad1d87299b1 100644 --- a/pkg/services/sqlstore/stats.go +++ b/pkg/services/sqlstore/stats.go @@ -81,7 +81,11 @@ func GetAdminStats(query *m.GetAdminStatsQuery) error { ( SELECT COUNT (DISTINCT ` + dialect.Quote("dashboard_id") + ` ) FROM ` + dialect.Quote("star") + ` - ) AS starred_db_count + ) AS starred_db_count, + ( + SELECT SUM ( ` + dialect.Quote("is_admin") + ` ) + FROM ` + dialect.Quote("user") + ` + ) AS grafana_admin_count ` var stats m.AdminStats diff --git a/public/app/features/admin/partials/stats.html b/public/app/features/admin/partials/stats.html index 0df6d251f5c..3743b0c81b8 100644 --- a/public/app/features/admin/partials/stats.html +++ b/public/app/features/admin/partials/stats.html @@ -1,10 +1,13 @@ - + +

- Stats + Overview

@@ -23,6 +26,10 @@ + + + + From 442db7fee1cc87a04fd95477b8a432784311f448 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 25 Jan 2016 14:30:36 -0800 Subject: [PATCH 7/9] Changed sql query for grafana_admin_count --- pkg/services/sqlstore/stats.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/services/sqlstore/stats.go b/pkg/services/sqlstore/stats.go index ad1d87299b1..a2e61aa0c3e 100644 --- a/pkg/services/sqlstore/stats.go +++ b/pkg/services/sqlstore/stats.go @@ -83,8 +83,9 @@ func GetAdminStats(query *m.GetAdminStatsQuery) error { FROM ` + dialect.Quote("star") + ` ) AS starred_db_count, ( - SELECT SUM ( ` + dialect.Quote("is_admin") + ` ) + SELECT COUNT(*) FROM ` + dialect.Quote("user") + ` + WHERE ` + dialect.Quote("is_admin") + ` = 1 ) AS grafana_admin_count ` From 07fee0a810f0e0a2f6058ec6be8df5e1d9863508 Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 25 Jan 2016 17:49:39 -0800 Subject: [PATCH 8/9] Converted adminStatsCtrl to typescript --- public/app/core/routes/all.js | 1 + public/app/features/admin/adminStatsCtrl.js | 24 ------------------- public/app/features/admin/adminStatsCtrl.ts | 18 ++++++++++++++ public/app/features/admin/partials/stats.html | 20 ++++++++-------- 4 files changed, 29 insertions(+), 34 deletions(-) delete mode 100644 public/app/features/admin/adminStatsCtrl.js create mode 100644 public/app/features/admin/adminStatsCtrl.ts diff --git a/public/app/core/routes/all.js b/public/app/core/routes/all.js index bc71a63a094..d9726ee782c 100644 --- a/public/app/core/routes/all.js +++ b/public/app/core/routes/all.js @@ -115,6 +115,7 @@ define([ .when('/admin/stats', { templateUrl: 'app/features/admin/partials/stats.html', controller : 'AdminStatsCtrl', + controllerAs: 'ctrl', }) .when('/login', { templateUrl: 'app/partials/login.html', diff --git a/public/app/features/admin/adminStatsCtrl.js b/public/app/features/admin/adminStatsCtrl.js deleted file mode 100644 index 217429d1253..00000000000 --- a/public/app/features/admin/adminStatsCtrl.js +++ /dev/null @@ -1,24 +0,0 @@ -define([ - 'angular', -], -function (angular) { - 'use strict'; - - var module = angular.module('grafana.controllers'); - - module.controller('AdminStatsCtrl', function($scope, backendSrv) { - - $scope.init = function() { - $scope.getStats(); - }; - - $scope.getStats = function() { - backendSrv.get('/api/admin/stats').then(function(stats) { - $scope.stats = stats; - }); - }; - - $scope.init(); - - }); -}); diff --git a/public/app/features/admin/adminStatsCtrl.ts b/public/app/features/admin/adminStatsCtrl.ts new file mode 100644 index 00000000000..0331524dcc7 --- /dev/null +++ b/public/app/features/admin/adminStatsCtrl.ts @@ -0,0 +1,18 @@ +// + +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); diff --git a/public/app/features/admin/partials/stats.html b/public/app/features/admin/partials/stats.html index 3743b0c81b8..4949e71e441 100644 --- a/public/app/features/admin/partials/stats.html +++ b/public/app/features/admin/partials/stats.html @@ -5,7 +5,7 @@
-
+

Overview

@@ -20,39 +20,39 @@
- + - + - + - + - + - + - + - + - +
Total users {{stats.user_count}}
Total grafana admins{{stats.grafana_admin_count}}
Total organizations {{stats.org_count}}
Total dashboards{{stats.dashboard_count}}{{ctrl.stats.dashboard_count}}
Total users{{stats.user_count}}{{ctrl.stats.user_count}}
Total grafana admins{{stats.grafana_admin_count}}{{ctrl.stats.grafana_admin_count}}
Total organizations{{stats.org_count}}{{ctrl.stats.org_count}}
Total datasources{{stats.data_source_count}}{{ctrl.stats.data_source_count}}
Total playlists{{stats.playlist_count}}{{ctrl.stats.playlist_count}}
Total snapshots{{stats.db_snapshot_count}}{{ctrl.stats.db_snapshot_count}}
Total dashboard tags{{stats.db_tag_count}}{{ctrl.stats.db_tag_count}}
Total starred dashboards{{stats.starred_db_count}}{{ctrl.stats.starred_db_count}}
From e59b0c0694106e2fb131c54ebd03c950756b447d Mon Sep 17 00:00:00 2001 From: utkarshcmu Date: Mon, 25 Jan 2016 18:10:48 -0800 Subject: [PATCH 9/9] Fixed ts file comment --- public/app/features/admin/adminStatsCtrl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/app/features/admin/adminStatsCtrl.ts b/public/app/features/admin/adminStatsCtrl.ts index 0331524dcc7..aa3ed6de343 100644 --- a/public/app/features/admin/adminStatsCtrl.ts +++ b/public/app/features/admin/adminStatsCtrl.ts @@ -1,4 +1,4 @@ -// +/// import angular from 'angular';