grafana/public/app/core/services/context_srv.ts

69 lines
1.5 KiB
TypeScript

import config from 'app/core/config';
import _ from 'lodash';
import coreModule from 'app/core/core_module';
import store from 'app/core/store';
export class User {
isGrafanaAdmin: any;
isSignedIn: any;
orgRole: any;
orgId: number;
timezone: string;
helpFlags1: number;
lightTheme: boolean;
constructor() {
if (config.bootData.user) {
_.extend(this, config.bootData.user);
}
}
}
export class ContextSrv {
pinned: any;
version: any;
user: User;
isSignedIn: any;
isGrafanaAdmin: any;
isEditor: any;
sidemenu: any;
sidemenuSmallBreakpoint = false;
constructor() {
this.sidemenu = store.getBool('grafana.sidemenu', true);
if (!config.buildInfo) {
config.buildInfo = {};
}
if (!config.bootData) {
config.bootData = { user: {}, settings: {} };
}
this.version = config.buildInfo.version;
this.user = new User();
this.isSignedIn = this.user.isSignedIn;
this.isGrafanaAdmin = this.user.isGrafanaAdmin;
this.isEditor = this.hasRole('Editor') || this.hasRole('Admin');
}
hasRole(role) {
return this.user.orgRole === role;
}
isGrafanaVisible() {
return !!(document.visibilityState === undefined || document.visibilityState === 'visible');
}
toggleSideMenu() {
this.sidemenu = !this.sidemenu;
store.set('grafana.sidemenu', this.sidemenu);
}
}
var contextSrv = new ContextSrv();
export { contextSrv };
coreModule.factory('contextSrv', function() {
return contextSrv;
});