config.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import _ from 'lodash';
  2. import { PanelPlugin } from 'app/types/plugins';
  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: any;
  13. panels: PanelPlugin[];
  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. loginError: any;
  35. viewersCanEdit: boolean;
  36. disableSanitizeHtml: boolean;
  37. constructor(options: Settings) {
  38. const defaults = {
  39. datasources: {},
  40. windowTitlePrefix: 'Grafana - ',
  41. panels: {},
  42. newPanelTitle: 'Panel Title',
  43. playlist_timespan: '1m',
  44. unsaved_changes_warning: true,
  45. appSubUrl: '',
  46. buildInfo: {
  47. version: 'v1.0',
  48. commit: '1',
  49. env: 'production',
  50. isEnterprise: false,
  51. },
  52. viewersCanEdit: false,
  53. disableSanitizeHtml: false
  54. };
  55. _.extend(this, defaults, options);
  56. }
  57. }
  58. const bootData = (window as any).grafanaBootData || {
  59. settings: {},
  60. user: {},
  61. };
  62. const options = bootData.settings;
  63. options.bootData = bootData;
  64. const config = new Settings(options);
  65. export default config;