ServerStatsStore.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { types, getEnv, flow } from 'mobx-state-tree';
  2. export const ServerStat = types.model('ServerStat', {
  3. name: types.string,
  4. value: types.optional(types.number, 0),
  5. });
  6. export const ServerStatsStore = types
  7. .model('ServerStatsStore', {
  8. stats: types.array(ServerStat),
  9. error: types.optional(types.string, ''),
  10. })
  11. .actions(self => ({
  12. load: flow(function* load() {
  13. let backendSrv = getEnv(self).backendSrv;
  14. try {
  15. let res = yield backendSrv.get('/api/admin/stats');
  16. self.stats.clear();
  17. self.stats.push(ServerStat.create({ name: 'Total dashboards', value: res.dashboards }));
  18. self.stats.push(ServerStat.create({ name: 'Total users', value: res.users }));
  19. self.stats.push(ServerStat.create({ name: 'Active users (seen last 30 days)', value: res.activeUsers }));
  20. self.stats.push(ServerStat.create({ name: 'Total orgs', value: res.orgs }));
  21. self.stats.push(ServerStat.create({ name: 'Total playlists', value: res.playlists }));
  22. self.stats.push(ServerStat.create({ name: 'Total snapshots', value: res.snapshots }));
  23. self.stats.push(ServerStat.create({ name: 'Total dashboard tags', value: res.tags }));
  24. self.stats.push(ServerStat.create({ name: 'Total starred dashboards', value: res.stars }));
  25. self.stats.push(ServerStat.create({ name: 'Total alerts', value: res.alerts }));
  26. } catch (err) {
  27. console.log('ServerStats.load error', err);
  28. self.error = err.toString();
  29. }
  30. }),
  31. }));