summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/monitoring/stores/state.js
blob: b8ecb15a72f8e639831796cff83e8f27255ad6db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import invalidUrl from '~/lib/utils/invalid_url';
import { defaultTimeRange } from '~/vue_shared/constants';
import { timezones } from '../format_date';
import { dashboardEmptyStates } from '../constants';

export default () => ({
  // API endpoints
  deploymentsEndpoint: null,
  dashboardEndpoint: invalidUrl,
  dashboardsEndpoint: invalidUrl,
  panelPreviewEndpoint: invalidUrl,

  // Dashboard request parameters
  timeRange: null,
  /**
   * Currently selected dashboard. For custom dashboards,
   * this could be the filename or the file path.
   *
   * If this is the filename and full path is required,
   * getters.fullDashboardPath should be used.
   */
  currentDashboard: null,

  // Dashboard data
  hasDashboardValidationWarnings: false,

  /**
   * {?String} If set, dashboard should display a global
   * empty state, there is no way to interact (yet)
   * with the dashboard.
   */
  emptyState: dashboardEmptyStates.GETTING_STARTED,
  showErrorBanner: true,
  isUpdatingStarredValue: false,
  dashboard: {
    panelGroups: [],
  },
  /**
   * Panel that is currently "zoomed" in as
   * a single panel in view.
   */
  expandedPanel: {
    /**
     * {?String} Panel's group name.
     */
    group: null,
    /**
     * {?Object} Panel content from `dashboard`
     * null when no panel is expanded.
     */
    panel: null,
  },
  allDashboards: [],
  /**
   * User-defined custom variables are passed
   * via the dashboard yml file.
   */
  variables: [],
  /**
   * User-defined custom links are passed
   * via the dashboard yml file.
   */
  links: [],

  // Panel editor / builder
  panelPreviewYml: '',
  panelPreviewIsLoading: false,
  panelPreviewGraphData: null,
  panelPreviewError: null,
  panelPreviewTimeRange: defaultTimeRange,
  panelPreviewIsShown: false,

  // Other project data
  dashboardTimezone: timezones.LOCAL,
  annotations: [],
  deploymentData: [],
  environments: [],
  environmentsSearchTerm: '',
  environmentsLoading: false,
  currentEnvironmentName: null,

  // GitLab paths to other pages
  externalDashboardUrl: '',
  projectPath: null,
  operationsSettingsPath: '',
  logsPath: invalidUrl,
  addDashboardDocumentationPath: '',

  // static paths
  customDashboardBasePath: '',

  // current user data
  /**
   * Flag that denotes if the currently logged user can access
   * the project Settings -> Operations
   */
  canAccessOperationsSettings: false,
});