@perses-dev/dashboards 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/cjs/components/Dashboard.js +1 -1
  2. package/dist/cjs/components/DashboardToolbar.js +3 -18
  3. package/dist/cjs/components/GridLayout/GridItemContent.js +3 -3
  4. package/dist/cjs/components/GridLayout/GridLayout.js +6 -9
  5. package/dist/cjs/components/GridLayout/GridTitle.js +15 -9
  6. package/dist/cjs/components/Panel/Panel.js +11 -6
  7. package/dist/cjs/components/Panel/Panel.test.js +17 -13
  8. package/dist/cjs/components/Panel/PanelContent.js +15 -0
  9. package/dist/cjs/components/Panel/index.js +29 -0
  10. package/dist/cjs/components/PanelDrawer/PanelDrawer.js +124 -0
  11. package/dist/cjs/components/PanelDrawer/PanelDrawer.test.js +111 -0
  12. package/dist/cjs/components/PanelDrawer/PanelOptionsEditor.js +19 -0
  13. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.js +60 -0
  14. package/dist/cjs/components/PanelGroupDialog/PanelGroupDialog.test.js +95 -0
  15. package/dist/cjs/components/{TimeRangeControls.js → TimeRangeControls/TimeRangeControls.js} +20 -31
  16. package/dist/cjs/components/TimeRangeControls/TimeRangeControls.test.js +51 -0
  17. package/dist/cjs/components/TimeRangeControls/index.js +29 -0
  18. package/dist/cjs/components/Variables/Variable.js +57 -0
  19. package/dist/cjs/components/Variables/VariableList.js +27 -0
  20. package/dist/cjs/components/{VariableList → Variables}/index.js +1 -0
  21. package/dist/cjs/components/index.js +2 -3
  22. package/dist/cjs/context/DashboardAppSlice.js +45 -0
  23. package/dist/cjs/context/DashboardProvider.js +54 -36
  24. package/dist/cjs/context/LayoutsSlice.js +42 -0
  25. package/dist/cjs/context/QueryStringProvider.js +35 -0
  26. package/dist/cjs/context/TemplateVariableProvider.js +216 -0
  27. package/dist/cjs/context/TimeRangeProvider.js +66 -0
  28. package/dist/cjs/context/index.js +6 -3
  29. package/dist/cjs/css/styles.js +173 -169
  30. package/dist/cjs/test/plugin-registry.js +24 -17
  31. package/dist/cjs/test/render.js +11 -2
  32. package/dist/cjs/test/testDashboard.js +14 -37
  33. package/dist/cjs/views/DashboardApp.js +4 -4
  34. package/dist/cjs/views/ViewDashboard.js +30 -2
  35. package/dist/cjs/views/index.js +1 -1
  36. package/dist/components/Dashboard.d.ts.map +1 -1
  37. package/dist/components/Dashboard.js +1 -1
  38. package/dist/components/DashboardToolbar.d.ts +0 -1
  39. package/dist/components/DashboardToolbar.d.ts.map +1 -1
  40. package/dist/components/DashboardToolbar.js +1 -1
  41. package/dist/components/GridLayout/GridItemContent.d.ts +1 -0
  42. package/dist/components/GridLayout/GridItemContent.d.ts.map +1 -1
  43. package/dist/components/GridLayout/GridItemContent.js +1 -1
  44. package/dist/components/GridLayout/GridLayout.d.ts +2 -1
  45. package/dist/components/GridLayout/GridLayout.d.ts.map +1 -1
  46. package/dist/components/GridLayout/GridLayout.js +1 -1
  47. package/dist/components/GridLayout/GridTitle.d.ts +1 -0
  48. package/dist/components/GridLayout/GridTitle.d.ts.map +1 -1
  49. package/dist/components/GridLayout/GridTitle.js +1 -1
  50. package/dist/components/Panel/Panel.d.ts +2 -0
  51. package/dist/components/Panel/Panel.d.ts.map +1 -1
  52. package/dist/components/Panel/Panel.js +1 -1
  53. package/dist/components/Panel/Panel.test.d.ts.map +1 -1
  54. package/dist/components/Panel/Panel.test.js +1 -1
  55. package/dist/components/Panel/PanelContent.d.ts +11 -0
  56. package/dist/components/Panel/PanelContent.d.ts.map +1 -0
  57. package/dist/components/Panel/PanelContent.js +1 -0
  58. package/dist/components/Panel/index.d.ts +2 -0
  59. package/dist/components/Panel/index.d.ts.map +1 -0
  60. package/dist/components/Panel/index.js +1 -0
  61. package/dist/components/PanelDrawer/PanelDrawer.d.ts +4 -0
  62. package/dist/components/PanelDrawer/PanelDrawer.d.ts.map +1 -0
  63. package/dist/components/PanelDrawer/PanelDrawer.js +1 -0
  64. package/dist/components/PanelDrawer/PanelDrawer.test.d.ts +2 -0
  65. package/dist/components/PanelDrawer/PanelDrawer.test.d.ts.map +1 -0
  66. package/dist/components/PanelDrawer/PanelDrawer.test.js +1 -0
  67. package/dist/components/PanelDrawer/PanelOptionsEditor.d.ts +9 -0
  68. package/dist/components/PanelDrawer/PanelOptionsEditor.d.ts.map +1 -0
  69. package/dist/components/PanelDrawer/PanelOptionsEditor.js +1 -0
  70. package/dist/components/PanelGroupDialog/PanelGroupDialog.d.ts +4 -0
  71. package/dist/components/PanelGroupDialog/PanelGroupDialog.d.ts.map +1 -0
  72. package/dist/components/PanelGroupDialog/PanelGroupDialog.js +1 -0
  73. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.d.ts +2 -0
  74. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.d.ts.map +1 -0
  75. package/dist/components/PanelGroupDialog/PanelGroupDialog.test.js +1 -0
  76. package/dist/components/{TimeRangeControls.d.ts → TimeRangeControls/TimeRangeControls.d.ts} +0 -0
  77. package/dist/components/TimeRangeControls/TimeRangeControls.d.ts.map +1 -0
  78. package/dist/components/TimeRangeControls/TimeRangeControls.js +1 -0
  79. package/dist/components/TimeRangeControls/TimeRangeControls.test.d.ts +2 -0
  80. package/dist/components/TimeRangeControls/TimeRangeControls.test.d.ts.map +1 -0
  81. package/dist/components/TimeRangeControls/TimeRangeControls.test.js +1 -0
  82. package/dist/components/TimeRangeControls/index.d.ts +2 -0
  83. package/dist/components/TimeRangeControls/index.d.ts.map +1 -0
  84. package/dist/components/TimeRangeControls/index.js +1 -0
  85. package/dist/components/Variables/Variable.d.ts +8 -0
  86. package/dist/components/Variables/Variable.d.ts.map +1 -0
  87. package/dist/components/Variables/Variable.js +1 -0
  88. package/dist/components/Variables/VariableList.d.ts +3 -0
  89. package/dist/components/Variables/VariableList.d.ts.map +1 -0
  90. package/dist/components/Variables/VariableList.js +1 -0
  91. package/dist/components/Variables/index.d.ts +3 -0
  92. package/dist/components/Variables/index.d.ts.map +1 -0
  93. package/dist/components/Variables/index.js +1 -0
  94. package/dist/components/index.d.ts +2 -3
  95. package/dist/components/index.d.ts.map +1 -1
  96. package/dist/components/index.js +1 -1
  97. package/dist/context/DashboardAppSlice.d.ts +26 -0
  98. package/dist/context/DashboardAppSlice.d.ts.map +1 -0
  99. package/dist/context/DashboardAppSlice.js +1 -0
  100. package/dist/context/DashboardProvider.d.ts +8 -19
  101. package/dist/context/DashboardProvider.d.ts.map +1 -1
  102. package/dist/context/DashboardProvider.js +1 -1
  103. package/dist/context/LayoutsSlice.d.ts +12 -0
  104. package/dist/context/LayoutsSlice.d.ts.map +1 -0
  105. package/dist/context/LayoutsSlice.js +1 -0
  106. package/dist/context/QueryStringProvider.d.ts +13 -0
  107. package/dist/context/QueryStringProvider.d.ts.map +1 -0
  108. package/dist/context/QueryStringProvider.js +1 -0
  109. package/dist/context/TemplateVariableProvider.d.ts +25 -0
  110. package/dist/context/TemplateVariableProvider.d.ts.map +1 -0
  111. package/dist/context/TemplateVariableProvider.js +1 -0
  112. package/dist/context/TimeRangeProvider.d.ts +12 -0
  113. package/dist/context/TimeRangeProvider.d.ts.map +1 -0
  114. package/dist/context/TimeRangeProvider.js +1 -0
  115. package/dist/context/index.d.ts +5 -2
  116. package/dist/context/index.d.ts.map +1 -1
  117. package/dist/context/index.js +1 -1
  118. package/dist/css/styles.d.ts +7 -7
  119. package/dist/css/styles.d.ts.map +1 -1
  120. package/dist/css/styles.js +1 -1
  121. package/dist/test/plugin-registry.d.ts +4 -2
  122. package/dist/test/plugin-registry.d.ts.map +1 -1
  123. package/dist/test/plugin-registry.js +1 -1
  124. package/dist/test/render.d.ts +2 -1
  125. package/dist/test/render.d.ts.map +1 -1
  126. package/dist/test/render.js +1 -1
  127. package/dist/test/testDashboard.d.ts.map +1 -1
  128. package/dist/test/testDashboard.js +1 -1
  129. package/dist/views/DashboardApp.js +1 -1
  130. package/dist/views/ViewDashboard.d.ts.map +1 -1
  131. package/dist/views/ViewDashboard.js +1 -1
  132. package/package.json +9 -11
  133. package/dist/cjs/components/AddPanel/AddPanel.js +0 -75
  134. package/dist/cjs/components/VariableAutocomplete.js +0 -63
  135. package/dist/cjs/components/VariableList/VariableList.js +0 -42
  136. package/dist/cjs/components/VariableList/VariableList.test.js +0 -86
  137. package/dist/cjs/context/TemplateVariablesProvider.js +0 -142
  138. package/dist/cjs/context/TimeRangeStateProvider.js +0 -49
  139. package/dist/components/AddPanel/AddPanel.d.ts +0 -8
  140. package/dist/components/AddPanel/AddPanel.d.ts.map +0 -1
  141. package/dist/components/AddPanel/AddPanel.js +0 -1
  142. package/dist/components/TimeRangeControls.d.ts.map +0 -1
  143. package/dist/components/TimeRangeControls.js +0 -1
  144. package/dist/components/VariableAutocomplete.d.ts +0 -21
  145. package/dist/components/VariableAutocomplete.d.ts.map +0 -1
  146. package/dist/components/VariableAutocomplete.js +0 -1
  147. package/dist/components/VariableList/VariableList.d.ts +0 -11
  148. package/dist/components/VariableList/VariableList.d.ts.map +0 -1
  149. package/dist/components/VariableList/VariableList.js +0 -1
  150. package/dist/components/VariableList/VariableList.test.d.ts +0 -2
  151. package/dist/components/VariableList/VariableList.test.d.ts.map +0 -1
  152. package/dist/components/VariableList/VariableList.test.js +0 -1
  153. package/dist/components/VariableList/index.d.ts +0 -2
  154. package/dist/components/VariableList/index.d.ts.map +0 -1
  155. package/dist/components/VariableList/index.js +0 -1
  156. package/dist/context/TemplateVariablesProvider.d.ts +0 -23
  157. package/dist/context/TemplateVariablesProvider.d.ts.map +0 -1
  158. package/dist/context/TemplateVariablesProvider.js +0 -1
  159. package/dist/context/TimeRangeStateProvider.d.ts +0 -22
  160. package/dist/context/TimeRangeStateProvider.d.ts.map +0 -1
  161. package/dist/context/TimeRangeStateProvider.js +0 -1
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useQueryString = exports.QueryStringProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // Copyright 2022 The Perses Authors
6
+ // Licensed under the Apache License, Version 2.0 (the "License");
7
+ // you may not use this file except in compliance with the License.
8
+ // You may obtain a copy of the License at
9
+ //
10
+ // http://www.apache.org/licenses/LICENSE-2.0
11
+ //
12
+ // Unless required by applicable law or agreed to in writing, software
13
+ // distributed under the License is distributed on an "AS IS" BASIS,
14
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ // See the License for the specific language governing permissions and
16
+ // limitations under the License.
17
+ const react_1 = require("react");
18
+ const plugin_system_1 = require("@perses-dev/plugin-system");
19
+ /**
20
+ * Allows apps to provide their own query string implementations
21
+ */
22
+ function QueryStringProvider(props) {
23
+ const { queryString, setQueryString, children } = props;
24
+ const ctx = (0, react_1.useMemo)(() => ({ queryString, setQueryString }), [queryString, setQueryString]);
25
+ return (0, jsx_runtime_1.jsx)(plugin_system_1.QueryStringContext.Provider, { value: ctx, children: children });
26
+ }
27
+ exports.QueryStringProvider = QueryStringProvider;
28
+ function useQueryString() {
29
+ const ctx = (0, react_1.useContext)(plugin_system_1.QueryStringContext);
30
+ if (ctx === undefined) {
31
+ throw new Error('No QueryStringContext found. Did you forget a Provider?');
32
+ }
33
+ return ctx;
34
+ }
35
+ exports.useQueryString = useQueryString;
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemplateVariableProvider = exports.useTemplateVariableStore = exports.useTemplateVariableDefinitions = exports.useTemplateVariableActions = exports.useTemplateVariable = exports.useTemplateVariableValues = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // Copyright 2022 The Perses Authors
6
+ // Licensed under the Apache License, Version 2.0 (the "License");
7
+ // you may not use this file except in compliance with the License.
8
+ // You may obtain a copy of the License at
9
+ //
10
+ // http://www.apache.org/licenses/LICENSE-2.0
11
+ //
12
+ // Unless required by applicable law or agreed to in writing, software
13
+ // distributed under the License is distributed on an "AS IS" BASIS,
14
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ // See the License for the specific language governing permissions and
16
+ // limitations under the License.
17
+ const react_1 = require("react");
18
+ const zustand_1 = require("zustand");
19
+ const immer_1 = require("zustand/middleware/immer");
20
+ const middleware_1 = require("zustand/middleware");
21
+ const plugin_system_1 = require("@perses-dev/plugin-system");
22
+ const core_1 = require("@perses-dev/core");
23
+ const TemplateVariableStoreContext = (0, react_1.createContext)(undefined);
24
+ function useTemplateVariableStoreCtx() {
25
+ const context = (0, react_1.useContext)(TemplateVariableStoreContext);
26
+ if (!context) {
27
+ throw new Error('TemplateVariableStoreContext not initialized');
28
+ }
29
+ return context;
30
+ }
31
+ function useTemplateVariableValues(variableNames) {
32
+ const store = useTemplateVariableStoreCtx();
33
+ const state = (0, zustand_1.useStore)(store, (s) => {
34
+ const names = variableNames !== null && variableNames !== void 0 ? variableNames : Object.keys(s.variableState);
35
+ const vars = {};
36
+ names.forEach((name) => {
37
+ const varState = s.variableState[name];
38
+ if (!varState) {
39
+ return;
40
+ }
41
+ vars[name] = varState;
42
+ });
43
+ return vars;
44
+ }, (left, right) => {
45
+ return JSON.stringify(left) === JSON.stringify(right);
46
+ });
47
+ return state;
48
+ }
49
+ exports.useTemplateVariableValues = useTemplateVariableValues;
50
+ function useTemplateVariable(name) {
51
+ const store = useTemplateVariableStoreCtx();
52
+ return (0, zustand_1.useStore)(store, (s) => {
53
+ const variableState = s.variableState[name];
54
+ const definition = s.variableDefinitions.find((v) => v.name === name);
55
+ return {
56
+ state: variableState,
57
+ definition,
58
+ };
59
+ });
60
+ }
61
+ exports.useTemplateVariable = useTemplateVariable;
62
+ function useTemplateVariableActions() {
63
+ const store = useTemplateVariableStoreCtx();
64
+ return (0, zustand_1.useStore)(store, (s) => {
65
+ return {
66
+ setVariableValue: s.setVariableValue,
67
+ loadTemplateVariable: s.loadTemplateVariable,
68
+ };
69
+ });
70
+ }
71
+ exports.useTemplateVariableActions = useTemplateVariableActions;
72
+ function useTemplateVariableDefinitions() {
73
+ const store = useTemplateVariableStoreCtx();
74
+ return (0, zustand_1.useStore)(store, (s) => s.variableDefinitions);
75
+ }
76
+ exports.useTemplateVariableDefinitions = useTemplateVariableDefinitions;
77
+ function useTemplateVariableStore() {
78
+ const store = useTemplateVariableStoreCtx();
79
+ return (0, zustand_1.useStore)(store);
80
+ }
81
+ exports.useTemplateVariableStore = useTemplateVariableStore;
82
+ function PluginProvider({ children }) {
83
+ const values = useTemplateVariableValues();
84
+ return (0, jsx_runtime_1.jsx)(plugin_system_1.TemplateVariableContext.Provider, { value: { state: values }, children: children });
85
+ }
86
+ function createTemplateVariableSrvStore({ initialVariableDefinitions = [] }) {
87
+ const store = (0, zustand_1.createStore)()((0, middleware_1.devtools)((0, immer_1.immer)((set, get) => ({
88
+ variableState: hydrateTemplateVariableStates(initialVariableDefinitions),
89
+ variableDefinitions: initialVariableDefinitions,
90
+ // Actions
91
+ loadTemplateVariable: async (name) => {
92
+ const def = get().variableDefinitions.find((v) => v.name === name);
93
+ if (!def) {
94
+ // Can't find the variable definition
95
+ return;
96
+ }
97
+ set((state) => {
98
+ const varState = state.variableState[name];
99
+ if (varState) {
100
+ varState.loading = true;
101
+ }
102
+ });
103
+ // Replace with loader
104
+ const { data: values } = await loadTemplateVariables();
105
+ if (def.options.allowAllValue) {
106
+ values.unshift(getAllOption());
107
+ }
108
+ set((state) => {
109
+ const varState = state.variableState[name];
110
+ if (varState) {
111
+ varState.options = values;
112
+ varState.loading = false;
113
+ }
114
+ });
115
+ return;
116
+ },
117
+ setVariableValue: (name, value) => set((state) => {
118
+ let val = value;
119
+ const varState = state.variableState[name];
120
+ if (!varState) {
121
+ return;
122
+ }
123
+ // Make sure there is only one all value
124
+ if (Array.isArray(val) && val.includes(core_1.DEFAULT_ALL_VALUE)) {
125
+ if (val.at(-1) === core_1.DEFAULT_ALL_VALUE) {
126
+ val = [core_1.DEFAULT_ALL_VALUE];
127
+ }
128
+ else {
129
+ val = val.filter((v) => v !== core_1.DEFAULT_ALL_VALUE);
130
+ }
131
+ }
132
+ varState.value = val;
133
+ }),
134
+ }))));
135
+ return store;
136
+ }
137
+ function TemplateVariableProvider({ children, initialVariableDefinitions = [], }) {
138
+ const store = createTemplateVariableSrvStore({ initialVariableDefinitions });
139
+ return ((0, jsx_runtime_1.jsx)(TemplateVariableStoreContext.Provider, { value: store, children: (0, jsx_runtime_1.jsx)(PluginProvider, { children: children }) }));
140
+ }
141
+ exports.TemplateVariableProvider = TemplateVariableProvider;
142
+ /** Helpers */
143
+ async function loadTemplateVariables() {
144
+ // @TODO: Replace with plugin call
145
+ // simluate sleep for 2 seconds
146
+ // random time between 1 and 3 seconds
147
+ const sleepTime = Math.floor(Math.random() * 10000) + 1000;
148
+ await new Promise((resolve) => setTimeout(resolve, sleepTime));
149
+ return {
150
+ data: [
151
+ 'a',
152
+ 'b',
153
+ 'c',
154
+ 'd',
155
+ 'e',
156
+ 'f',
157
+ 'g',
158
+ 'h',
159
+ 'i',
160
+ 'j',
161
+ 'k',
162
+ 'l',
163
+ 'm',
164
+ 'n',
165
+ 'o',
166
+ 'p',
167
+ 'q',
168
+ 'r',
169
+ 's',
170
+ 't',
171
+ 'u',
172
+ 'v',
173
+ 'w',
174
+ 'x',
175
+ 'y',
176
+ 'z',
177
+ ].map((v) => ({ label: v, value: v })),
178
+ };
179
+ }
180
+ function getAllOption() {
181
+ return { label: 'All', value: core_1.DEFAULT_ALL_VALUE };
182
+ }
183
+ function hydrateTemplateVariableState(definition) {
184
+ var _a, _b;
185
+ const v = definition;
186
+ const varState = {
187
+ value: null,
188
+ loading: false,
189
+ };
190
+ switch (v.kind) {
191
+ case 'TextVariable':
192
+ varState.value = v.options.value;
193
+ break;
194
+ case 'ListVariable':
195
+ varState.options = [];
196
+ if (v.options.allowAllValue) {
197
+ varState.options.unshift({ label: 'All', value: core_1.DEFAULT_ALL_VALUE });
198
+ }
199
+ if (varState.options.length > 0 && !varState.value) {
200
+ const firstOptionValue = (_b = (_a = varState.options[0]) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;
201
+ if (firstOptionValue !== null) {
202
+ varState.value = v.options.allowMultiple ? [firstOptionValue] : firstOptionValue;
203
+ }
204
+ }
205
+ default:
206
+ break;
207
+ }
208
+ return varState;
209
+ }
210
+ function hydrateTemplateVariableStates(definitions) {
211
+ const state = {};
212
+ definitions.forEach((v) => {
213
+ state[v.name] = hydrateTemplateVariableState(v);
214
+ });
215
+ return state;
216
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimeRangeProvider = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ // Copyright 2022 The Perses Authors
6
+ // Licensed under the Apache License, Version 2.0 (the "License");
7
+ // you may not use this file except in compliance with the License.
8
+ // You may obtain a copy of the License at
9
+ //
10
+ // http://www.apache.org/licenses/LICENSE-2.0
11
+ //
12
+ // Unless required by applicable law or agreed to in writing, software
13
+ // distributed under the License is distributed on an "AS IS" BASIS,
14
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ // See the License for the specific language governing permissions and
16
+ // limitations under the License.
17
+ const react_1 = require("react");
18
+ const date_fns_1 = require("date-fns");
19
+ const core_1 = require("@perses-dev/core");
20
+ const plugin_system_1 = require("@perses-dev/plugin-system");
21
+ /**
22
+ * Provider implementation that supplies the time range state at runtime.
23
+ */
24
+ function TimeRangeProvider(props) {
25
+ const { initialTimeRange, children, onTimeRangeChange } = props;
26
+ const { queryString, setQueryString } = (0, plugin_system_1.useQueryString)();
27
+ const defaultTimeRange = (0, core_1.isRelativeTimeRange)(initialTimeRange)
28
+ ? (0, core_1.toAbsoluteTimeRange)(initialTimeRange)
29
+ : initialTimeRange;
30
+ const [timeRange, setActiveTimeRange] = (0, react_1.useState)(defaultTimeRange);
31
+ const setTimeRange = (0, react_1.useCallback)((value) => {
32
+ if (onTimeRangeChange !== undefined) {
33
+ // optional callback to override default behavior
34
+ onTimeRangeChange(value);
35
+ return;
36
+ }
37
+ if ((0, core_1.isRelativeTimeRange)(value)) {
38
+ if (setQueryString) {
39
+ queryString.set('start', value.pastDuration);
40
+ // end not required for relative time but may have been set by AbsoluteTimePicker or zoom
41
+ queryString.delete('end');
42
+ setQueryString(queryString);
43
+ }
44
+ else {
45
+ setActiveTimeRange((0, core_1.toAbsoluteTimeRange)(value));
46
+ }
47
+ return;
48
+ }
49
+ // allows app to specify whether query params should be source of truth for active time range
50
+ if (setQueryString) {
51
+ // Absolute URL example) ?start=1663707045000&end=1663713330000
52
+ // currently set from ViewDashboard initial queryString, AbsoluteTimePicker, or LineChart panel onDataZoom
53
+ const startUnixMs = (0, date_fns_1.getUnixTime)(value.start) * 1000;
54
+ const endUnixMs = (0, date_fns_1.getUnixTime)(value.end) * 1000;
55
+ queryString.set('start', startUnixMs.toString());
56
+ queryString.set('end', endUnixMs.toString());
57
+ setQueryString(queryString);
58
+ }
59
+ else {
60
+ setActiveTimeRange(value);
61
+ }
62
+ }, [queryString, setQueryString, onTimeRangeChange]);
63
+ const ctx = (0, react_1.useMemo)(() => ({ timeRange, setTimeRange }), [timeRange, setTimeRange]);
64
+ return (0, jsx_runtime_1.jsx)(plugin_system_1.TimeRangeContext.Provider, { value: ctx, children: children });
65
+ }
66
+ exports.TimeRangeProvider = TimeRangeProvider;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2021 The Perses Authors
2
+ // Copyright 2022 The Perses Authors
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
5
5
  // You may obtain a copy of the License at
@@ -26,6 +26,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- __exportStar(require("./TemplateVariablesProvider"), exports);
30
- __exportStar(require("./TimeRangeStateProvider"), exports);
29
+ __exportStar(require("./DashboardAppSlice"), exports);
30
+ __exportStar(require("./LayoutsSlice"), exports);
31
+ __exportStar(require("./TemplateVariableProvider"), exports);
31
32
  __exportStar(require("./DashboardProvider"), exports);
33
+ __exportStar(require("./TimeRangeProvider"), exports);
34
+ __exportStar(require("./QueryStringProvider"), exports);