config.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import _ from 'lodash';
  2. import { GrafanaTheme, getTheme, GrafanaThemeType, PanelPluginMeta, DataSourceInstanceSettings } from '@grafana/ui';
  3. export interface BuildInfo {
  4. version: string;
  5. commit: string;
  6. isEnterprise: boolean;
  7. env: string;
  8. latestVersion: string;
  9. hasUpdate: boolean;
  10. }
  11. export class Settings {
  12. datasources: { [str: string]: DataSourceInstanceSettings };
  13. panels: { [key: string]: PanelPluginMeta };
  14. appSubUrl: string;
  15. windowTitlePrefix: string;
  16. buildInfo: BuildInfo;
  17. newPanelTitle: string;
  18. bootData: any;
  19. externalUserMngLinkUrl: string;
  20. externalUserMngLinkName: string;
  21. externalUserMngInfo: string;
  22. allowOrgCreate: boolean;
  23. disableLoginForm: boolean;
  24. defaultDatasource: string;
  25. alertingEnabled: boolean;
  26. alertingErrorOrTimeout: string;
  27. alertingNoDataOrNullValues: string;
  28. authProxyEnabled: boolean;
  29. exploreEnabled: boolean;
  30. ldapEnabled: boolean;
  31. oauth: any;
  32. disableUserSignUp: boolean;
  33. loginHint: any;
  34. passwordHint: any;
  35. loginError: any;
  36. viewersCanEdit: boolean;
  37. editorsCanAdmin: boolean;
  38. disableSanitizeHtml: boolean;
  39. theme: GrafanaTheme;
  40. pluginsToPreload: string[];
  41. constructor(options: Settings) {
  42. this.theme = options.bootData.user.lightTheme ? getTheme(GrafanaThemeType.Light) : getTheme(GrafanaThemeType.Dark);
  43. const defaults = {
  44. datasources: {},
  45. windowTitlePrefix: 'Grafana - ',
  46. panels: {},
  47. newPanelTitle: 'Panel Title',
  48. playlist_timespan: '1m',
  49. unsaved_changes_warning: true,
  50. appSubUrl: '',
  51. buildInfo: {
  52. version: 'v1.0',
  53. commit: '1',
  54. env: 'production',
  55. isEnterprise: false,
  56. },
  57. viewersCanEdit: false,
  58. editorsCanAdmin: false,
  59. disableSanitizeHtml: false,
  60. };
  61. _.extend(this, defaults, options);
  62. }
  63. }
  64. const bootData = (window as any).grafanaBootData || {
  65. settings: {},
  66. user: {},
  67. };
  68. const options = bootData.settings;
  69. options.bootData = bootData;
  70. export const config = new Settings(options);
  71. export default config;