@perses-dev/dashboards 0.0.0-snapshot-color-palette-gen-test-0ebddd6 → 0.0.0-snapshot-saving-defaults-refinements-1b25cec
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.
- package/dist/cjs/components/DashboardStickyToolbar/DashboardStickyToolbar.js +79 -0
- package/dist/cjs/{stories/decorators/WithQueryParams.js → components/DashboardStickyToolbar/index.js} +11 -12
- package/dist/cjs/components/DashboardToolbar/DashboardToolbar.js +8 -24
- package/dist/cjs/components/EditJsonButton/EditJsonButton.js +1 -0
- package/dist/cjs/components/EditJsonDialog/EditJsonDialog.js +5 -0
- package/dist/cjs/components/GridLayout/GridItemContent.js +22 -4
- package/dist/cjs/components/GridLayout/GridLayout.js +31 -2
- package/dist/cjs/components/GridLayout/GridTitle.js +30 -9
- package/dist/cjs/components/Panel/Panel.js +2 -2
- package/dist/cjs/components/PanelDrawer/PanelEditorForm.js +41 -34
- package/dist/cjs/components/PanelDrawer/PanelPreview.js +32 -18
- package/dist/cjs/components/PanelDrawer/usePanelEditor.js +87 -0
- package/dist/cjs/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +92 -0
- package/dist/cjs/components/SaveChangesConfirmationDialog/index.js +28 -0
- package/dist/cjs/components/SaveDashboardButton/SaveDashboardButton.js +81 -0
- package/dist/cjs/components/SaveDashboardButton/index.js +28 -0
- package/dist/cjs/components/TimeRangeControls/TimeRangeControls.js +5 -5
- package/dist/cjs/components/Variables/VariableEditorForm/VariableEditorForm.js +124 -198
- package/dist/cjs/components/Variables/VariableEditorForm/VariablePreview.js +178 -0
- package/dist/cjs/components/Variables/VariableEditorForm/index.js +1 -0
- package/dist/cjs/components/Variables/VariableEditorForm/variable-editor-form-model.js +7 -8
- package/dist/cjs/components/Variables/VariableList.js +16 -55
- package/dist/cjs/components/Variables/index.js +1 -0
- package/dist/cjs/components/index.js +3 -0
- package/dist/cjs/context/DashboardProvider/DashboardProvider.js +9 -8
- package/dist/cjs/context/DashboardProvider/common.js +26 -6
- package/dist/cjs/context/DashboardProvider/dashboard-provider-api.js +13 -4
- package/dist/cjs/context/DashboardProvider/index.js +1 -0
- package/dist/cjs/context/DashboardProvider/panel-editor-slice.js +8 -32
- package/dist/cjs/context/DashboardProvider/save-changes-dialog-slice.js +33 -0
- package/dist/cjs/context/TemplateVariableProvider/TemplateVariableProvider.js +56 -7
- package/dist/cjs/context/TemplateVariableProvider/hydrationUtils.js +2 -0
- package/dist/cjs/context/TemplateVariableProvider/utils.js +44 -0
- package/dist/cjs/context/useDashboard.js +4 -4
- package/dist/cjs/stories/decorators/WithDatasourceStore.js +2 -47
- package/dist/cjs/stories/decorators/index.js +0 -4
- package/dist/cjs/test/datasource-provider.js +70 -0
- package/dist/cjs/test/index.js +1 -0
- package/dist/cjs/test/plugin-registry.js +11 -5
- package/dist/cjs/test/render.js +35 -13
- package/dist/cjs/test/testDashboard.js +79 -79
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/{stories/decorators/WithQueryClient.js → utils/time.js} +9 -11
- package/dist/cjs/views/ViewDashboard/DashboardApp.js +2 -1
- package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.d.ts +9 -0
- package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.d.ts.map +1 -0
- package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.js +68 -0
- package/dist/components/DashboardStickyToolbar/DashboardStickyToolbar.js.map +1 -0
- package/dist/components/DashboardStickyToolbar/index.d.ts +2 -0
- package/dist/components/DashboardStickyToolbar/index.d.ts.map +1 -0
- package/dist/{stories/decorators/WithQueryClient.js → components/DashboardStickyToolbar/index.js} +2 -10
- package/dist/components/DashboardStickyToolbar/index.js.map +1 -0
- package/dist/components/DashboardToolbar/DashboardToolbar.d.ts +2 -2
- package/dist/components/DashboardToolbar/DashboardToolbar.d.ts.map +1 -1
- package/dist/components/DashboardToolbar/DashboardToolbar.js +10 -26
- package/dist/components/DashboardToolbar/DashboardToolbar.js.map +1 -1
- package/dist/components/EditJsonButton/EditJsonButton.js +1 -0
- package/dist/components/EditJsonButton/EditJsonButton.js.map +1 -1
- package/dist/components/EditJsonDialog/EditJsonDialog.d.ts.map +1 -1
- package/dist/components/EditJsonDialog/EditJsonDialog.js +5 -0
- package/dist/components/EditJsonDialog/EditJsonDialog.js.map +1 -1
- package/dist/components/GridLayout/GridItemContent.d.ts +1 -0
- package/dist/components/GridLayout/GridItemContent.d.ts.map +1 -1
- package/dist/components/GridLayout/GridItemContent.js +22 -4
- package/dist/components/GridLayout/GridItemContent.js.map +1 -1
- package/dist/components/GridLayout/GridLayout.d.ts.map +1 -1
- package/dist/components/GridLayout/GridLayout.js +31 -2
- package/dist/components/GridLayout/GridLayout.js.map +1 -1
- package/dist/components/GridLayout/GridTitle.d.ts.map +1 -1
- package/dist/components/GridLayout/GridTitle.js +30 -9
- package/dist/components/GridLayout/GridTitle.js.map +1 -1
- package/dist/components/Panel/Panel.d.ts +1 -1
- package/dist/components/Panel/Panel.d.ts.map +1 -1
- package/dist/components/Panel/Panel.js +3 -3
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelDrawer/PanelEditorForm.d.ts.map +1 -1
- package/dist/components/PanelDrawer/PanelEditorForm.js +42 -35
- package/dist/components/PanelDrawer/PanelEditorForm.js.map +1 -1
- package/dist/components/PanelDrawer/PanelPreview.d.ts +1 -1
- package/dist/components/PanelDrawer/PanelPreview.d.ts.map +1 -1
- package/dist/components/PanelDrawer/PanelPreview.js +32 -18
- package/dist/components/PanelDrawer/PanelPreview.js.map +1 -1
- package/dist/components/PanelDrawer/usePanelEditor.d.ts +15 -0
- package/dist/components/PanelDrawer/usePanelEditor.d.ts.map +1 -0
- package/dist/components/PanelDrawer/usePanelEditor.js +84 -0
- package/dist/components/PanelDrawer/usePanelEditor.js.map +1 -0
- package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.d.ts +3 -0
- package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.d.ts.map +1 -0
- package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +86 -0
- package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js.map +1 -0
- package/dist/components/SaveChangesConfirmationDialog/index.d.ts +2 -0
- package/dist/components/SaveChangesConfirmationDialog/index.d.ts.map +1 -0
- package/dist/{stories/decorators/WithQueryParams.js → components/SaveChangesConfirmationDialog/index.js} +2 -10
- package/dist/components/SaveChangesConfirmationDialog/index.js.map +1 -0
- package/dist/components/SaveDashboardButton/SaveDashboardButton.d.ts +10 -0
- package/dist/components/SaveDashboardButton/SaveDashboardButton.d.ts.map +1 -0
- package/dist/components/SaveDashboardButton/SaveDashboardButton.js +75 -0
- package/dist/components/SaveDashboardButton/SaveDashboardButton.js.map +1 -0
- package/dist/components/SaveDashboardButton/index.d.ts +2 -0
- package/dist/components/SaveDashboardButton/index.d.ts.map +1 -0
- package/dist/components/SaveDashboardButton/index.js +15 -0
- package/dist/components/SaveDashboardButton/index.js.map +1 -0
- package/dist/components/TimeRangeControls/TimeRangeControls.js +6 -6
- package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -1
- package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts +4 -2
- package/dist/components/Variables/VariableEditorForm/VariableEditorForm.d.ts.map +1 -1
- package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js +127 -196
- package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js.map +1 -1
- package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts +16 -0
- package/dist/components/Variables/VariableEditorForm/VariablePreview.d.ts.map +1 -0
- package/dist/components/Variables/VariableEditorForm/VariablePreview.js +122 -0
- package/dist/components/Variables/VariableEditorForm/VariablePreview.js.map +1 -0
- package/dist/components/Variables/VariableEditorForm/index.d.ts +1 -0
- package/dist/components/Variables/VariableEditorForm/index.d.ts.map +1 -1
- package/dist/components/Variables/VariableEditorForm/index.js +1 -0
- package/dist/components/Variables/VariableEditorForm/index.js.map +1 -1
- package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.d.ts.map +1 -1
- package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js +7 -8
- package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js.map +1 -1
- package/dist/components/Variables/VariableList.d.ts +1 -7
- package/dist/components/Variables/VariableList.d.ts.map +1 -1
- package/dist/components/Variables/VariableList.js +18 -52
- package/dist/components/Variables/VariableList.js.map +1 -1
- package/dist/components/Variables/index.d.ts +1 -0
- package/dist/components/Variables/index.d.ts.map +1 -1
- package/dist/components/Variables/index.js +1 -0
- package/dist/components/Variables/index.js.map +1 -1
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -1
- package/dist/context/DashboardProvider/DashboardProvider.d.ts +4 -3
- package/dist/context/DashboardProvider/DashboardProvider.d.ts.map +1 -1
- package/dist/context/DashboardProvider/DashboardProvider.js +9 -8
- package/dist/context/DashboardProvider/DashboardProvider.js.map +1 -1
- package/dist/context/DashboardProvider/common.d.ts +3 -0
- package/dist/context/DashboardProvider/common.d.ts.map +1 -1
- package/dist/context/DashboardProvider/common.js +17 -2
- package/dist/context/DashboardProvider/common.js.map +1 -1
- package/dist/context/DashboardProvider/dashboard-provider-api.d.ts +6 -1
- package/dist/context/DashboardProvider/dashboard-provider-api.d.ts.map +1 -1
- package/dist/context/DashboardProvider/dashboard-provider-api.js +11 -3
- package/dist/context/DashboardProvider/dashboard-provider-api.js.map +1 -1
- package/dist/context/DashboardProvider/index.d.ts +1 -0
- package/dist/context/DashboardProvider/index.d.ts.map +1 -1
- package/dist/context/DashboardProvider/index.js +1 -0
- package/dist/context/DashboardProvider/index.js.map +1 -1
- package/dist/context/DashboardProvider/panel-editor-slice.d.ts +3 -6
- package/dist/context/DashboardProvider/panel-editor-slice.d.ts.map +1 -1
- package/dist/context/DashboardProvider/panel-editor-slice.js +9 -33
- package/dist/context/DashboardProvider/panel-editor-slice.js.map +1 -1
- package/dist/context/DashboardProvider/save-changes-dialog-slice.d.ts +15 -0
- package/dist/context/DashboardProvider/save-changes-dialog-slice.d.ts.map +1 -0
- package/dist/context/DashboardProvider/save-changes-dialog-slice.js +27 -0
- package/dist/context/DashboardProvider/save-changes-dialog-slice.js.map +1 -0
- package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts +10 -0
- package/dist/context/TemplateVariableProvider/TemplateVariableProvider.d.ts.map +1 -1
- package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js +51 -7
- package/dist/context/TemplateVariableProvider/TemplateVariableProvider.js.map +1 -1
- package/dist/context/TemplateVariableProvider/hydrationUtils.d.ts.map +1 -1
- package/dist/context/TemplateVariableProvider/hydrationUtils.js +2 -0
- package/dist/context/TemplateVariableProvider/hydrationUtils.js.map +1 -1
- package/dist/context/TemplateVariableProvider/utils.d.ts +7 -0
- package/dist/context/TemplateVariableProvider/utils.d.ts.map +1 -0
- package/dist/context/TemplateVariableProvider/utils.js +40 -0
- package/dist/context/TemplateVariableProvider/utils.js.map +1 -0
- package/dist/context/useDashboard.d.ts.map +1 -1
- package/dist/context/useDashboard.js +4 -4
- package/dist/context/useDashboard.js.map +1 -1
- package/dist/stories/decorators/WithDashboard.js.map +1 -1
- package/dist/stories/decorators/WithDatasourceStore.js +1 -46
- package/dist/stories/decorators/WithDatasourceStore.js.map +1 -1
- package/dist/stories/decorators/WithTemplateVariables.js.map +1 -1
- package/dist/stories/decorators/index.js +0 -4
- package/dist/stories/decorators/index.js.map +1 -1
- package/dist/test/datasource-provider.d.ts +6 -0
- package/dist/test/datasource-provider.d.ts.map +1 -0
- package/dist/test/datasource-provider.js +60 -0
- package/dist/test/datasource-provider.js.map +1 -0
- package/dist/test/index.d.ts +1 -0
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +1 -0
- package/dist/test/index.js.map +1 -1
- package/dist/test/plugin-registry.d.ts.map +1 -1
- package/dist/test/plugin-registry.js +11 -5
- package/dist/test/plugin-registry.js.map +1 -1
- package/dist/test/render.d.ts.map +1 -1
- package/dist/test/render.js +35 -13
- package/dist/test/render.js.map +1 -1
- package/dist/test/testDashboard.js +79 -79
- package/dist/test/testDashboard.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/time.d.ts +5 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +23 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/views/ViewDashboard/DashboardApp.d.ts +2 -1
- package/dist/views/ViewDashboard/DashboardApp.d.ts.map +1 -1
- package/dist/views/ViewDashboard/DashboardApp.js +3 -2
- package/dist/views/ViewDashboard/DashboardApp.js.map +1 -1
- package/package.json +7 -6
- package/dist/cjs/stories/decorators/WithPluginRegistry.js +0 -91
- package/dist/cjs/stories/decorators/WithTimeRange.js +0 -38
- package/dist/stories/decorators/WithPluginRegistry.js +0 -46
- package/dist/stories/decorators/WithPluginRegistry.js.map +0 -1
- package/dist/stories/decorators/WithQueryClient.js.map +0 -1
- package/dist/stories/decorators/WithQueryParams.js.map +0 -1
- package/dist/stories/decorators/WithTimeRange.js +0 -32
- package/dist/stories/decorators/WithTimeRange.js.map +0 -1
|
@@ -15,7 +15,9 @@ import { createContext, useContext, useMemo, useState } from 'react';
|
|
|
15
15
|
import { createStore, useStore } from 'zustand';
|
|
16
16
|
import { immer } from 'zustand/middleware/immer';
|
|
17
17
|
import { devtools } from 'zustand/middleware';
|
|
18
|
+
import produce from 'immer';
|
|
18
19
|
import { TemplateVariableContext, DEFAULT_ALL_VALUE as ALL_VALUE } from '@perses-dev/plugin-system';
|
|
20
|
+
import { checkSavedDefaultVariableStatus } from './utils';
|
|
19
21
|
import { hydrateTemplateVariableStates } from './hydrationUtils';
|
|
20
22
|
import { useVariableQueryParams, getInitalValuesFromQueryParameters, getURLQueryParamName } from './query-params';
|
|
21
23
|
const TemplateVariableStoreContext = /*#__PURE__*/ createContext(undefined);
|
|
@@ -62,7 +64,9 @@ export function useTemplateVariableActions() {
|
|
|
62
64
|
setVariableValue: s.setVariableValue,
|
|
63
65
|
setVariableLoading: s.setVariableLoading,
|
|
64
66
|
setVariableOptions: s.setVariableOptions,
|
|
65
|
-
setVariableDefinitions: s.setVariableDefinitions
|
|
67
|
+
setVariableDefinitions: s.setVariableDefinitions,
|
|
68
|
+
setVariableDefaultValues: s.setVariableDefaultValues,
|
|
69
|
+
getSavedVariablesStatus: s.getSavedVariablesStatus
|
|
66
70
|
};
|
|
67
71
|
});
|
|
68
72
|
}
|
|
@@ -105,14 +109,16 @@ function PluginProvider({ children }) {
|
|
|
105
109
|
}
|
|
106
110
|
function createTemplateVariableSrvStore({ initialVariableDefinitions =[] , queryParams }) {
|
|
107
111
|
const initialParams = getInitalValuesFromQueryParameters(queryParams ? queryParams[0] : {});
|
|
108
|
-
const store = createStore()(devtools(immer((set)=>
|
|
112
|
+
const store = createStore()(devtools(immer((set, get)=>{
|
|
113
|
+
return {
|
|
109
114
|
variableState: hydrateTemplateVariableStates(initialVariableDefinitions, initialParams),
|
|
110
115
|
variableDefinitions: initialVariableDefinitions,
|
|
111
116
|
setVariableDefinitions (definitions) {
|
|
112
117
|
set((state)=>{
|
|
113
118
|
state.variableDefinitions = definitions;
|
|
114
119
|
state.variableState = hydrateTemplateVariableStates(definitions, initialParams);
|
|
115
|
-
}
|
|
120
|
+
}, false, '[Variables] setVariableDefinitions' // Used for action name in Redux devtools
|
|
121
|
+
);
|
|
116
122
|
},
|
|
117
123
|
setVariableOptions (name, options) {
|
|
118
124
|
set((state)=>{
|
|
@@ -121,7 +127,7 @@ function createTemplateVariableSrvStore({ initialVariableDefinitions =[] , query
|
|
|
121
127
|
return;
|
|
122
128
|
}
|
|
123
129
|
varState.options = options;
|
|
124
|
-
});
|
|
130
|
+
}, false, '[Variables] setVariableOptions');
|
|
125
131
|
},
|
|
126
132
|
setVariableLoading (name, loading) {
|
|
127
133
|
set((state)=>{
|
|
@@ -130,7 +136,7 @@ function createTemplateVariableSrvStore({ initialVariableDefinitions =[] , query
|
|
|
130
136
|
return;
|
|
131
137
|
}
|
|
132
138
|
varState.loading = loading;
|
|
133
|
-
});
|
|
139
|
+
}, false, '[Variables] setVariableLoading');
|
|
134
140
|
},
|
|
135
141
|
setVariableValue: (name, value)=>set((state)=>{
|
|
136
142
|
let val = value;
|
|
@@ -153,8 +159,46 @@ function createTemplateVariableSrvStore({ initialVariableDefinitions =[] , query
|
|
|
153
159
|
});
|
|
154
160
|
}
|
|
155
161
|
varState.value = val;
|
|
156
|
-
})
|
|
157
|
-
|
|
162
|
+
}, false, '[Variables] setVariableValue'),
|
|
163
|
+
setVariableDefaultValues: ()=>{
|
|
164
|
+
const variableDefinitions = get().variableDefinitions;
|
|
165
|
+
const variableState = get().variableState;
|
|
166
|
+
const updatedVariables = produce(variableDefinitions, (draft)=>{
|
|
167
|
+
draft.forEach((variable, index)=>{
|
|
168
|
+
if (variable.kind === 'ListVariable') {
|
|
169
|
+
const currentVariable = variableState[variable.spec.name];
|
|
170
|
+
if ((currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== undefined) {
|
|
171
|
+
draft[index] = {
|
|
172
|
+
kind: 'ListVariable',
|
|
173
|
+
spec: produce(variable.spec, (specDraft)=>{
|
|
174
|
+
specDraft.default_value = currentVariable.value;
|
|
175
|
+
})
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
} else if (variable.kind === 'TextVariable') {
|
|
179
|
+
const currentVariable1 = variableState[variable.spec.name];
|
|
180
|
+
const currentVariableValue = typeof (currentVariable1 === null || currentVariable1 === void 0 ? void 0 : currentVariable1.value) === 'string' ? currentVariable1.value : '';
|
|
181
|
+
if ((currentVariable1 === null || currentVariable1 === void 0 ? void 0 : currentVariable1.value) !== undefined) {
|
|
182
|
+
draft[index] = {
|
|
183
|
+
kind: 'TextVariable',
|
|
184
|
+
spec: produce(variable.spec, (specDraft)=>{
|
|
185
|
+
specDraft.value = currentVariableValue;
|
|
186
|
+
})
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
set((state)=>{
|
|
193
|
+
state.variableDefinitions = updatedVariables;
|
|
194
|
+
}, false, '[Variables] setVariableDefaultValues');
|
|
195
|
+
return updatedVariables;
|
|
196
|
+
},
|
|
197
|
+
getSavedVariablesStatus: ()=>{
|
|
198
|
+
return checkSavedDefaultVariableStatus(get().variableDefinitions, get().variableState);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
})));
|
|
158
202
|
return store;
|
|
159
203
|
}
|
|
160
204
|
export function TemplateVariableProvider({ children , initialVariableDefinitions =[] }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/context/TemplateVariableProvider/TemplateVariableProvider.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { createContext, useContext, useMemo, useState } from 'react';\nimport { createStore, useStore } from 'zustand';\nimport { immer } from 'zustand/middleware/immer';\nimport { devtools } from 'zustand/middleware';\n\nimport {\n TemplateVariableContext,\n VariableStateMap,\n VariableState,\n VariableOption,\n DEFAULT_ALL_VALUE as ALL_VALUE,\n} from '@perses-dev/plugin-system';\nimport { VariableName, VariableValue, VariableDefinition } from '@perses-dev/core';\nimport { hydrateTemplateVariableStates } from './hydrationUtils';\nimport { useVariableQueryParams, getInitalValuesFromQueryParameters, getURLQueryParamName } from './query-params';\n\ntype TemplateVariableStore = {\n variableDefinitions: VariableDefinition[];\n variableState: VariableStateMap;\n setVariableValue: (variableName: VariableName, value: VariableValue) => void;\n setVariableOptions: (name: VariableName, options: VariableOption[]) => void;\n setVariableLoading: (name: VariableName, loading: boolean) => void;\n setVariableDefinitions: (definitions: VariableDefinition[]) => void;\n};\n\nconst TemplateVariableStoreContext = createContext<ReturnType<typeof createTemplateVariableSrvStore> | undefined>(\n undefined\n);\nfunction useTemplateVariableStoreCtx() {\n const context = useContext(TemplateVariableStoreContext);\n if (!context) {\n throw new Error('TemplateVariableStoreContext not initialized');\n }\n return context;\n}\n\nexport function useTemplateVariableValues(variableNames?: string[]) {\n const store = useTemplateVariableStoreCtx();\n const state = useStore(\n store,\n (s) => {\n const names = variableNames ?? Object.keys(s.variableState);\n const vars: VariableStateMap = {};\n names.forEach((name) => {\n const varState = s.variableState[name];\n if (!varState) {\n return;\n }\n vars[name] = varState;\n });\n return vars;\n },\n (left, right) => {\n return JSON.stringify(left) === JSON.stringify(right);\n }\n );\n return state;\n}\n\nexport function useTemplateVariable(name: string) {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => {\n const variableState = s.variableState[name];\n const definition = s.variableDefinitions.find((v) => v.spec.name === name);\n return {\n state: variableState,\n definition,\n };\n });\n}\n\nexport function useTemplateVariableActions() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => {\n return {\n setVariableValue: s.setVariableValue,\n setVariableLoading: s.setVariableLoading,\n setVariableOptions: s.setVariableOptions,\n setVariableDefinitions: s.setVariableDefinitions,\n };\n });\n}\n\nexport function useTemplateVariableDefinitions() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => s.variableDefinitions);\n}\n\nexport function useTemplateVariableStore() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store);\n}\n\nfunction PluginProvider({ children }: { children: React.ReactNode }) {\n const originalValues = useTemplateVariableValues();\n\n const values = useMemo(() => {\n const contextValues: VariableStateMap = {};\n\n // This will loop through all the current variables values\n // and update any variables that have ALL_VALUE as their current value\n // to include all options.\n Object.keys(originalValues).forEach((name) => {\n const v = { ...originalValues[name] } as VariableState;\n if (v.value === ALL_VALUE) {\n v.value = v.options?.map((o: { value: string }) => o.value) ?? null;\n }\n contextValues[name] = v;\n });\n return contextValues;\n }, [originalValues]);\n\n return <TemplateVariableContext.Provider value={{ state: values }}>{children}</TemplateVariableContext.Provider>;\n}\n\ninterface TemplateVariableSrvArgs {\n initialVariableDefinitions?: VariableDefinition[];\n queryParams?: ReturnType<typeof useVariableQueryParams>;\n}\n\nfunction createTemplateVariableSrvStore({ initialVariableDefinitions = [], queryParams }: TemplateVariableSrvArgs) {\n const initialParams = getInitalValuesFromQueryParameters(queryParams ? queryParams[0] : {});\n const store = createStore<TemplateVariableStore>()(\n devtools(\n immer((set) => ({\n variableState: hydrateTemplateVariableStates(initialVariableDefinitions, initialParams),\n variableDefinitions: initialVariableDefinitions,\n setVariableDefinitions(definitions: VariableDefinition[]) {\n set((state) => {\n state.variableDefinitions = definitions;\n state.variableState = hydrateTemplateVariableStates(definitions, initialParams);\n });\n },\n setVariableOptions(name, options) {\n set((state) => {\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n varState.options = options;\n });\n },\n setVariableLoading(name, loading) {\n set((state) => {\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n varState.loading = loading;\n });\n },\n\n setVariableValue: (name, value) =>\n set((state) => {\n let val = value;\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n\n // Make sure there is only one all value\n if (Array.isArray(val) && val.includes(ALL_VALUE)) {\n if (val.at(-1) === ALL_VALUE) {\n val = ALL_VALUE;\n } else {\n val = val.filter((v) => v !== ALL_VALUE);\n }\n }\n if (queryParams) {\n const setQueryParams = queryParams[1];\n setQueryParams({ [getURLQueryParamName(name)]: val });\n }\n varState.value = val;\n }),\n }))\n )\n );\n\n return store;\n}\n\nexport interface TemplateVariableProviderProps {\n children: React.ReactNode;\n initialVariableDefinitions?: VariableDefinition[];\n}\n\nexport function TemplateVariableProvider({ children, initialVariableDefinitions = [] }: TemplateVariableProviderProps) {\n const queryParams = useVariableQueryParams(initialVariableDefinitions);\n const [store] = useState(createTemplateVariableSrvStore({ initialVariableDefinitions, queryParams }));\n\n return (\n <TemplateVariableStoreContext.Provider value={store}>\n <PluginProvider>{children}</PluginProvider>\n </TemplateVariableStoreContext.Provider>\n );\n}\n"],"names":["createContext","useContext","useMemo","useState","createStore","useStore","immer","devtools","TemplateVariableContext","DEFAULT_ALL_VALUE","ALL_VALUE","hydrateTemplateVariableStates","useVariableQueryParams","getInitalValuesFromQueryParameters","getURLQueryParamName","TemplateVariableStoreContext","undefined","useTemplateVariableStoreCtx","context","Error","useTemplateVariableValues","variableNames","store","state","s","names","Object","keys","variableState","vars","forEach","name","varState","left","right","JSON","stringify","useTemplateVariable","definition","variableDefinitions","find","v","spec","useTemplateVariableActions","setVariableValue","setVariableLoading","setVariableOptions","setVariableDefinitions","useTemplateVariableDefinitions","useTemplateVariableStore","PluginProvider","children","originalValues","values","contextValues","value","options","map","o","Provider","createTemplateVariableSrvStore","initialVariableDefinitions","queryParams","initialParams","set","definitions","loading","val","Array","isArray","includes","at","filter","setQueryParams","TemplateVariableProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/context/TemplateVariableProvider/TemplateVariableProvider.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { createContext, useContext, useMemo, useState } from 'react';\nimport { createStore, useStore } from 'zustand';\nimport { immer } from 'zustand/middleware/immer';\nimport { devtools } from 'zustand/middleware';\nimport produce from 'immer';\n\nimport {\n TemplateVariableContext,\n VariableStateMap,\n VariableState,\n VariableOption,\n DEFAULT_ALL_VALUE as ALL_VALUE,\n} from '@perses-dev/plugin-system';\nimport { VariableName, VariableValue, VariableDefinition } from '@perses-dev/core';\nimport { checkSavedDefaultVariableStatus } from './utils';\nimport { hydrateTemplateVariableStates } from './hydrationUtils';\nimport { useVariableQueryParams, getInitalValuesFromQueryParameters, getURLQueryParamName } from './query-params';\n\ntype TemplateVariableStore = {\n variableDefinitions: VariableDefinition[];\n variableState: VariableStateMap;\n setVariableValue: (variableName: VariableName, value: VariableValue) => void;\n setVariableOptions: (name: VariableName, options: VariableOption[]) => void;\n setVariableLoading: (name: VariableName, loading: boolean) => void;\n setVariableDefinitions: (definitions: VariableDefinition[]) => void;\n setVariableDefaultValues: () => VariableDefinition[];\n getSavedVariablesStatus: () => { isSavedVariableModified: boolean; modifiedVariableNames: string[] };\n};\n\nconst TemplateVariableStoreContext = createContext<ReturnType<typeof createTemplateVariableSrvStore> | undefined>(\n undefined\n);\nfunction useTemplateVariableStoreCtx() {\n const context = useContext(TemplateVariableStoreContext);\n if (!context) {\n throw new Error('TemplateVariableStoreContext not initialized');\n }\n return context;\n}\n\nexport function useTemplateVariableValues(variableNames?: string[]) {\n const store = useTemplateVariableStoreCtx();\n const state = useStore(\n store,\n (s) => {\n const names = variableNames ?? Object.keys(s.variableState);\n const vars: VariableStateMap = {};\n names.forEach((name) => {\n const varState = s.variableState[name];\n if (!varState) {\n return;\n }\n vars[name] = varState;\n });\n return vars;\n },\n (left, right) => {\n return JSON.stringify(left) === JSON.stringify(right);\n }\n );\n return state;\n}\n\nexport function useTemplateVariable(name: string) {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => {\n const variableState = s.variableState[name];\n const definition = s.variableDefinitions.find((v) => v.spec.name === name);\n return {\n state: variableState,\n definition,\n };\n });\n}\n\nexport function useTemplateVariableActions() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => {\n return {\n setVariableValue: s.setVariableValue,\n setVariableLoading: s.setVariableLoading,\n setVariableOptions: s.setVariableOptions,\n setVariableDefinitions: s.setVariableDefinitions,\n setVariableDefaultValues: s.setVariableDefaultValues,\n getSavedVariablesStatus: s.getSavedVariablesStatus,\n };\n });\n}\n\nexport function useTemplateVariableDefinitions() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store, (s) => s.variableDefinitions);\n}\n\nexport function useTemplateVariableStore() {\n const store = useTemplateVariableStoreCtx();\n return useStore(store);\n}\n\nfunction PluginProvider({ children }: { children: React.ReactNode }) {\n const originalValues = useTemplateVariableValues();\n\n const values = useMemo(() => {\n const contextValues: VariableStateMap = {};\n\n // This will loop through all the current variables values\n // and update any variables that have ALL_VALUE as their current value\n // to include all options.\n Object.keys(originalValues).forEach((name) => {\n const v = { ...originalValues[name] } as VariableState;\n if (v.value === ALL_VALUE) {\n v.value = v.options?.map((o: { value: string }) => o.value) ?? null;\n }\n contextValues[name] = v;\n });\n return contextValues;\n }, [originalValues]);\n\n return <TemplateVariableContext.Provider value={{ state: values }}>{children}</TemplateVariableContext.Provider>;\n}\n\ninterface TemplateVariableSrvArgs {\n initialVariableDefinitions?: VariableDefinition[];\n queryParams?: ReturnType<typeof useVariableQueryParams>;\n}\n\nfunction createTemplateVariableSrvStore({ initialVariableDefinitions = [], queryParams }: TemplateVariableSrvArgs) {\n const initialParams = getInitalValuesFromQueryParameters(queryParams ? queryParams[0] : {});\n const store = createStore<TemplateVariableStore>()(\n devtools(\n immer((set, get) => ({\n variableState: hydrateTemplateVariableStates(initialVariableDefinitions, initialParams),\n variableDefinitions: initialVariableDefinitions,\n setVariableDefinitions(definitions: VariableDefinition[]) {\n set(\n (state) => {\n state.variableDefinitions = definitions;\n state.variableState = hydrateTemplateVariableStates(definitions, initialParams);\n },\n false,\n '[Variables] setVariableDefinitions' // Used for action name in Redux devtools\n );\n },\n setVariableOptions(name, options) {\n set(\n (state) => {\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n varState.options = options;\n },\n false,\n '[Variables] setVariableOptions'\n );\n },\n setVariableLoading(name, loading) {\n set(\n (state) => {\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n varState.loading = loading;\n },\n false,\n '[Variables] setVariableLoading'\n );\n },\n setVariableValue: (name, value) =>\n set(\n (state) => {\n let val = value;\n const varState = state.variableState[name];\n if (!varState) {\n return;\n }\n\n // Make sure there is only one all value\n if (Array.isArray(val) && val.includes(ALL_VALUE)) {\n if (val.at(-1) === ALL_VALUE) {\n val = ALL_VALUE;\n } else {\n val = val.filter((v) => v !== ALL_VALUE);\n }\n }\n if (queryParams) {\n const setQueryParams = queryParams[1];\n setQueryParams({ [getURLQueryParamName(name)]: val });\n }\n varState.value = val;\n },\n false,\n '[Variables] setVariableValue'\n ),\n setVariableDefaultValues: () => {\n const variableDefinitions = get().variableDefinitions;\n const variableState = get().variableState;\n const updatedVariables = produce(variableDefinitions, (draft) => {\n draft.forEach((variable, index) => {\n if (variable.kind === 'ListVariable') {\n const currentVariable = variableState[variable.spec.name];\n if (currentVariable?.value !== undefined) {\n draft[index] = {\n kind: 'ListVariable',\n spec: produce(variable.spec, (specDraft) => {\n specDraft.default_value = currentVariable.value;\n }),\n };\n }\n } else if (variable.kind === 'TextVariable') {\n const currentVariable = variableState[variable.spec.name];\n const currentVariableValue = typeof currentVariable?.value === 'string' ? currentVariable.value : '';\n if (currentVariable?.value !== undefined) {\n draft[index] = {\n kind: 'TextVariable',\n spec: produce(variable.spec, (specDraft) => {\n specDraft.value = currentVariableValue;\n }),\n };\n }\n }\n });\n });\n set(\n (state) => {\n state.variableDefinitions = updatedVariables;\n },\n false,\n '[Variables] setVariableDefaultValues'\n );\n return updatedVariables;\n },\n getSavedVariablesStatus: () => {\n return checkSavedDefaultVariableStatus(get().variableDefinitions, get().variableState);\n },\n }))\n )\n );\n\n return store;\n}\n\nexport interface TemplateVariableProviderProps {\n children: React.ReactNode;\n initialVariableDefinitions?: VariableDefinition[];\n}\n\nexport function TemplateVariableProvider({ children, initialVariableDefinitions = [] }: TemplateVariableProviderProps) {\n const queryParams = useVariableQueryParams(initialVariableDefinitions);\n const [store] = useState(createTemplateVariableSrvStore({ initialVariableDefinitions, queryParams }));\n\n return (\n <TemplateVariableStoreContext.Provider value={store}>\n <PluginProvider>{children}</PluginProvider>\n </TemplateVariableStoreContext.Provider>\n );\n}\n"],"names":["createContext","useContext","useMemo","useState","createStore","useStore","immer","devtools","produce","TemplateVariableContext","DEFAULT_ALL_VALUE","ALL_VALUE","checkSavedDefaultVariableStatus","hydrateTemplateVariableStates","useVariableQueryParams","getInitalValuesFromQueryParameters","getURLQueryParamName","TemplateVariableStoreContext","undefined","useTemplateVariableStoreCtx","context","Error","useTemplateVariableValues","variableNames","store","state","s","names","Object","keys","variableState","vars","forEach","name","varState","left","right","JSON","stringify","useTemplateVariable","definition","variableDefinitions","find","v","spec","useTemplateVariableActions","setVariableValue","setVariableLoading","setVariableOptions","setVariableDefinitions","setVariableDefaultValues","getSavedVariablesStatus","useTemplateVariableDefinitions","useTemplateVariableStore","PluginProvider","children","originalValues","values","contextValues","value","options","map","o","Provider","createTemplateVariableSrvStore","initialVariableDefinitions","queryParams","initialParams","set","get","definitions","loading","val","Array","isArray","includes","at","filter","setQueryParams","updatedVariables","draft","variable","index","kind","currentVariable","specDraft","default_value","currentVariableValue","TemplateVariableProvider"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrationUtils.d.ts","sourceRoot":"","sources":["../../../src/context/TemplateVariableProvider/hydrationUtils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAoC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"hydrationUtils.d.ts","sourceRoot":"","sources":["../../../src/context/TemplateVariableProvider/hydrationUtils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAoC,MAAM,2BAA2B,CAAC;AAuC/F,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,kBAAkB,EAAE,EACjC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAC3C,gBAAgB,CAUlB"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
13
|
import { DEFAULT_ALL_VALUE } from '@perses-dev/plugin-system';
|
|
14
|
+
// TODO: move to TemplateVariableProvider/utils.ts
|
|
14
15
|
function hydrateTemplateVariableState(variable, initialValue) {
|
|
15
16
|
const varState = {
|
|
16
17
|
value: null,
|
|
@@ -24,6 +25,7 @@ function hydrateTemplateVariableState(variable, initialValue) {
|
|
|
24
25
|
varState.options = [];
|
|
25
26
|
var ref;
|
|
26
27
|
varState.value = (ref = initialValue !== null && initialValue !== void 0 ? initialValue : variable.spec.default_value) !== null && ref !== void 0 ? ref : null;
|
|
28
|
+
// TODO: smarter fallbacks for default_value when allow_all_value is true
|
|
27
29
|
if (varState.options.length > 0 && !varState.value) {
|
|
28
30
|
var ref1;
|
|
29
31
|
var ref2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/context/TemplateVariableProvider/hydrationUtils.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { VariableValue, VariableDefinition } from '@perses-dev/core';\nimport { VariableStateMap, VariableState, DEFAULT_ALL_VALUE } from '@perses-dev/plugin-system';\n\nfunction hydrateTemplateVariableState(variable: VariableDefinition, initialValue?: VariableValue) {\n const varState: VariableState = {\n value: null,\n loading: false,\n };\n switch (variable.kind) {\n case 'TextVariable':\n varState.value = initialValue ?? variable.spec.value;\n break;\n case 'ListVariable':\n varState.options = [];\n varState.value = initialValue ?? variable.spec.default_value ?? null;\n\n if (varState.options.length > 0 && !varState.value) {\n const firstOptionValue = varState.options[0]?.value ?? null;\n if (firstOptionValue !== null) {\n varState.value = variable.spec.allow_multiple ? [firstOptionValue] : firstOptionValue;\n }\n }\n\n // \"all\" variable handling assumes the value is not in an array. This is\n // handled properly during internal variable interactions, but it is possible\n // to end up in a buggy state if the variables are initialized with an \"all\"\n // value inside an array. When hydrating variables, normalize this to minimize\n // bugs.\n if (Array.isArray(varState.value) && varState.value.length === 1 && varState.value[0] === DEFAULT_ALL_VALUE) {\n varState.value = DEFAULT_ALL_VALUE;\n }\n break;\n default:\n break;\n }\n return varState;\n}\n\nexport function hydrateTemplateVariableStates(\n definitions: VariableDefinition[],\n initialValues: Record<string, VariableValue>\n): VariableStateMap {\n const state: VariableStateMap = {};\n definitions.forEach((v) => {\n const name = v.spec.name;\n const param = initialValues[name];\n const initialValue = param ? param : null;\n state[name] = hydrateTemplateVariableState(v, initialValue);\n });\n\n return state;\n}\n"],"names":["DEFAULT_ALL_VALUE","hydrateTemplateVariableState","variable","initialValue","varState","value","loading","kind","spec","options","default_value","length","firstOptionValue","allow_multiple","Array","isArray","hydrateTemplateVariableStates","definitions","initialValues","state","forEach","v","name","param"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAA0CA,iBAAiB,QAAQ,2BAA2B,CAAC;AAE/F,SAASC,4BAA4B,CAACC,QAA4B,EAAEC,YAA4B,EAAE;IAChG,MAAMC,QAAQ,GAAkB;QAC9BC,KAAK,EAAE,IAAI;QACXC,OAAO,EAAE,KAAK;KACf,AAAC;IACF,OAAQJ,QAAQ,CAACK,IAAI;QACnB,KAAK,cAAc;YACjBH,QAAQ,CAACC,KAAK,GAAGF,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAID,QAAQ,CAACM,IAAI,CAACH,KAAK,CAAC;YACrD,MAAM;QACR,KAAK,cAAc;YACjBD,QAAQ,CAACK,OAAO,GAAG,EAAE,CAAC;gBACLN,GAA2C;YAA5DC,QAAQ,CAACC,KAAK,GAAGF,CAAAA,GAA2C,GAA3CA,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAID,QAAQ,CAACM,IAAI,CAACE,aAAa,cAA3CP,GAA2C,cAA3CA,GAA2C,GAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../src/context/TemplateVariableProvider/hydrationUtils.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { VariableValue, VariableDefinition } from '@perses-dev/core';\nimport { VariableStateMap, VariableState, DEFAULT_ALL_VALUE } from '@perses-dev/plugin-system';\n\n// TODO: move to TemplateVariableProvider/utils.ts\nfunction hydrateTemplateVariableState(variable: VariableDefinition, initialValue?: VariableValue) {\n const varState: VariableState = {\n value: null,\n loading: false,\n };\n switch (variable.kind) {\n case 'TextVariable':\n varState.value = initialValue ?? variable.spec.value;\n break;\n case 'ListVariable':\n varState.options = [];\n varState.value = initialValue ?? variable.spec.default_value ?? null;\n // TODO: smarter fallbacks for default_value when allow_all_value is true\n if (varState.options.length > 0 && !varState.value) {\n const firstOptionValue = varState.options[0]?.value ?? null;\n if (firstOptionValue !== null) {\n varState.value = variable.spec.allow_multiple ? [firstOptionValue] : firstOptionValue;\n }\n }\n\n // \"all\" variable handling assumes the value is not in an array. This is\n // handled properly during internal variable interactions, but it is possible\n // to end up in a buggy state if the variables are initialized with an \"all\"\n // value inside an array. When hydrating variables, normalize this to minimize\n // bugs.\n if (Array.isArray(varState.value) && varState.value.length === 1 && varState.value[0] === DEFAULT_ALL_VALUE) {\n varState.value = DEFAULT_ALL_VALUE;\n }\n\n break;\n default:\n break;\n }\n return varState;\n}\n\nexport function hydrateTemplateVariableStates(\n definitions: VariableDefinition[],\n initialValues: Record<string, VariableValue>\n): VariableStateMap {\n const state: VariableStateMap = {};\n definitions.forEach((v) => {\n const name = v.spec.name;\n const param = initialValues[name];\n const initialValue = param ? param : null;\n state[name] = hydrateTemplateVariableState(v, initialValue);\n });\n\n return state;\n}\n"],"names":["DEFAULT_ALL_VALUE","hydrateTemplateVariableState","variable","initialValue","varState","value","loading","kind","spec","options","default_value","length","firstOptionValue","allow_multiple","Array","isArray","hydrateTemplateVariableStates","definitions","initialValues","state","forEach","v","name","param"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC,SAA0CA,iBAAiB,QAAQ,2BAA2B,CAAC;AAE/F,kDAAkD;AAClD,SAASC,4BAA4B,CAACC,QAA4B,EAAEC,YAA4B,EAAE;IAChG,MAAMC,QAAQ,GAAkB;QAC9BC,KAAK,EAAE,IAAI;QACXC,OAAO,EAAE,KAAK;KACf,AAAC;IACF,OAAQJ,QAAQ,CAACK,IAAI;QACnB,KAAK,cAAc;YACjBH,QAAQ,CAACC,KAAK,GAAGF,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAID,QAAQ,CAACM,IAAI,CAACH,KAAK,CAAC;YACrD,MAAM;QACR,KAAK,cAAc;YACjBD,QAAQ,CAACK,OAAO,GAAG,EAAE,CAAC;gBACLN,GAA2C;YAA5DC,QAAQ,CAACC,KAAK,GAAGF,CAAAA,GAA2C,GAA3CA,YAAY,aAAZA,YAAY,cAAZA,YAAY,GAAID,QAAQ,CAACM,IAAI,CAACE,aAAa,cAA3CP,GAA2C,cAA3CA,GAA2C,GAAI,IAAI,CAAC;YACrE,yEAAyE;YACzE,IAAIC,QAAQ,CAACK,OAAO,CAACE,MAAM,GAAG,CAAC,IAAI,CAACP,QAAQ,CAACC,KAAK,EAAE;oBACzBD,IAAmB;oBAAnBA,IAA0B;gBAAnD,MAAMQ,gBAAgB,GAAGR,CAAAA,IAA0B,GAA1BA,CAAAA,IAAmB,GAAnBA,QAAQ,CAACK,OAAO,CAAC,CAAC,CAAC,cAAnBL,IAAmB,WAAO,GAA1BA,KAAAA,CAA0B,GAA1BA,IAAmB,CAAEC,KAAK,cAA1BD,IAA0B,cAA1BA,IAA0B,GAAI,IAAI,AAAC;gBAC5D,IAAIQ,gBAAgB,KAAK,IAAI,EAAE;oBAC7BR,QAAQ,CAACC,KAAK,GAAGH,QAAQ,CAACM,IAAI,CAACK,cAAc,GAAG;wBAACD,gBAAgB;qBAAC,GAAGA,gBAAgB,CAAC;gBACxF,CAAC;YACH,CAAC;YAED,wEAAwE;YACxE,6EAA6E;YAC7E,4EAA4E;YAC5E,8EAA8E;YAC9E,QAAQ;YACR,IAAIE,KAAK,CAACC,OAAO,CAACX,QAAQ,CAACC,KAAK,CAAC,IAAID,QAAQ,CAACC,KAAK,CAACM,MAAM,KAAK,CAAC,IAAIP,QAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,KAAKL,iBAAiB,EAAE;gBAC3GI,QAAQ,CAACC,KAAK,GAAGL,iBAAiB,CAAC;YACrC,CAAC;YAED,MAAM;QACR;YACE,MAAM;KACT;IACD,OAAOI,QAAQ,CAAC;AAClB,CAAC;AAED,OAAO,SAASY,6BAA6B,CAC3CC,WAAiC,EACjCC,aAA4C,EAC1B;IAClB,MAAMC,KAAK,GAAqB,EAAE,AAAC;IACnCF,WAAW,CAACG,OAAO,CAAC,CAACC,CAAC,GAAK;QACzB,MAAMC,IAAI,GAAGD,CAAC,CAACb,IAAI,CAACc,IAAI,AAAC;QACzB,MAAMC,KAAK,GAAGL,aAAa,CAACI,IAAI,CAAC,AAAC;QAClC,MAAMnB,YAAY,GAAGoB,KAAK,GAAGA,KAAK,GAAG,IAAI,AAAC;QAC1CJ,KAAK,CAACG,IAAI,CAAC,GAAGrB,4BAA4B,CAACoB,CAAC,EAAElB,YAAY,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,OAAOgB,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { VariableDefinition } from '@perses-dev/core';
|
|
2
|
+
import { VariableStateMap } from '@perses-dev/plugin-system';
|
|
3
|
+
export declare function checkSavedDefaultVariableStatus(definitions: VariableDefinition[], varState: VariableStateMap): {
|
|
4
|
+
isSavedVariableModified: boolean;
|
|
5
|
+
modifiedVariableNames: string[];
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/context/TemplateVariableProvider/utils.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAK7D,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,kBAAkB,EAAE,EAAE,QAAQ,EAAE,gBAAgB;;;EAoB5G"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// Copyright 2023 The Perses Authors
|
|
2
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
// you may not use this file except in compliance with the License.
|
|
4
|
+
// You may obtain a copy of the License at
|
|
5
|
+
//
|
|
6
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
//
|
|
8
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
9
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
|
+
// See the License for the specific language governing permissions and
|
|
12
|
+
// limitations under the License.
|
|
13
|
+
/*
|
|
14
|
+
* Check whether saved variable definitions are out of date with current default list values in Zustand store
|
|
15
|
+
*/ export function checkSavedDefaultVariableStatus(definitions, varState) {
|
|
16
|
+
let isSavedVariableModified = false;
|
|
17
|
+
const modifiedVariableNames = [];
|
|
18
|
+
for (const savedVariable of definitions){
|
|
19
|
+
if (savedVariable.kind === 'ListVariable') {
|
|
20
|
+
const currentVariable = varState[savedVariable.spec.name];
|
|
21
|
+
if ((currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== null && (currentVariable === null || currentVariable === void 0 ? void 0 : currentVariable.value) !== savedVariable.spec.default_value) {
|
|
22
|
+
modifiedVariableNames.push(savedVariable.spec.name);
|
|
23
|
+
isSavedVariableModified = true;
|
|
24
|
+
}
|
|
25
|
+
} else if (savedVariable.kind === 'TextVariable') {
|
|
26
|
+
const currentVariable1 = varState[savedVariable.spec.name];
|
|
27
|
+
const currentVariableValue = typeof (currentVariable1 === null || currentVariable1 === void 0 ? void 0 : currentVariable1.value) === 'string' ? currentVariable1.value : '';
|
|
28
|
+
if (savedVariable.spec.value !== currentVariableValue) {
|
|
29
|
+
modifiedVariableNames.push(savedVariable.spec.name);
|
|
30
|
+
isSavedVariableModified = true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
isSavedVariableModified,
|
|
36
|
+
modifiedVariableNames
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/context/TemplateVariableProvider/utils.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { VariableDefinition } from '@perses-dev/core';\nimport { VariableStateMap } from '@perses-dev/plugin-system';\n\n/*\n * Check whether saved variable definitions are out of date with current default list values in Zustand store\n */\nexport function checkSavedDefaultVariableStatus(definitions: VariableDefinition[], varState: VariableStateMap) {\n let isSavedVariableModified = false;\n const modifiedVariableNames: string[] = [];\n for (const savedVariable of definitions) {\n if (savedVariable.kind === 'ListVariable') {\n const currentVariable = varState[savedVariable.spec.name];\n if (currentVariable?.value !== null && currentVariable?.value !== savedVariable.spec.default_value) {\n modifiedVariableNames.push(savedVariable.spec.name);\n isSavedVariableModified = true;\n }\n } else if (savedVariable.kind === 'TextVariable') {\n const currentVariable = varState[savedVariable.spec.name];\n const currentVariableValue = typeof currentVariable?.value === 'string' ? currentVariable.value : '';\n if (savedVariable.spec.value !== currentVariableValue) {\n modifiedVariableNames.push(savedVariable.spec.name);\n isSavedVariableModified = true;\n }\n }\n }\n return { isSavedVariableModified, modifiedVariableNames };\n}\n"],"names":["checkSavedDefaultVariableStatus","definitions","varState","isSavedVariableModified","modifiedVariableNames","savedVariable","kind","currentVariable","spec","name","value","default_value","push","currentVariableValue"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAKjC;;CAEC,GACD,OAAO,SAASA,+BAA+B,CAACC,WAAiC,EAAEC,QAA0B,EAAE;IAC7G,IAAIC,uBAAuB,GAAG,KAAK,AAAC;IACpC,MAAMC,qBAAqB,GAAa,EAAE,AAAC;IAC3C,KAAK,MAAMC,aAAa,IAAIJ,WAAW,CAAE;QACvC,IAAII,aAAa,CAACC,IAAI,KAAK,cAAc,EAAE;YACzC,MAAMC,eAAe,GAAGL,QAAQ,CAACG,aAAa,CAACG,IAAI,CAACC,IAAI,CAAC,AAAC;YAC1D,IAAIF,CAAAA,eAAe,aAAfA,eAAe,WAAO,GAAtBA,KAAAA,CAAsB,GAAtBA,eAAe,CAAEG,KAAK,CAAA,KAAK,IAAI,IAAIH,CAAAA,eAAe,aAAfA,eAAe,WAAO,GAAtBA,KAAAA,CAAsB,GAAtBA,eAAe,CAAEG,KAAK,CAAA,KAAKL,aAAa,CAACG,IAAI,CAACG,aAAa,EAAE;gBAClGP,qBAAqB,CAACQ,IAAI,CAACP,aAAa,CAACG,IAAI,CAACC,IAAI,CAAC,CAAC;gBACpDN,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,OAAO,IAAIE,aAAa,CAACC,IAAI,KAAK,cAAc,EAAE;YAChD,MAAMC,gBAAe,GAAGL,QAAQ,CAACG,aAAa,CAACG,IAAI,CAACC,IAAI,CAAC,AAAC;YAC1D,MAAMI,oBAAoB,GAAG,OAAON,CAAAA,gBAAe,aAAfA,gBAAe,WAAO,GAAtBA,KAAAA,CAAsB,GAAtBA,gBAAe,CAAEG,KAAK,CAAA,KAAK,QAAQ,GAAGH,gBAAe,CAACG,KAAK,GAAG,EAAE,AAAC;YACrG,IAAIL,aAAa,CAACG,IAAI,CAACE,KAAK,KAAKG,oBAAoB,EAAE;gBACrDT,qBAAqB,CAACQ,IAAI,CAACP,aAAa,CAACG,IAAI,CAACC,IAAI,CAAC,CAAC;gBACpDN,uBAAuB,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QAAEA,uBAAuB;QAAEC,qBAAqB;KAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../src/context/useDashboard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAkB,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AAIrF,wBAAgB,YAAY;;
|
|
1
|
+
{"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../src/context/useDashboard.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAkB,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AAIrF,wBAAgB,YAAY;;sCAkCe,iBAAiB;EAS3D"}
|
|
@@ -14,14 +14,14 @@ import { createPanelRef } from '@perses-dev/core';
|
|
|
14
14
|
import { useDashboardStore } from './DashboardProvider';
|
|
15
15
|
import { useTemplateVariableActions, useTemplateVariableDefinitions } from './TemplateVariableProvider';
|
|
16
16
|
export function useDashboard() {
|
|
17
|
-
const { panels , panelGroups , panelGroupOrder ,
|
|
17
|
+
const { panels , panelGroups , panelGroupOrder , setDashboard: setDashboardResource , metadata , display , duration , } = useDashboardStore(({ panels , panelGroups , panelGroupOrder , setDashboard , metadata , display , duration })=>({
|
|
18
18
|
panels,
|
|
19
19
|
panelGroups,
|
|
20
20
|
panelGroupOrder,
|
|
21
|
-
defaultTimeRange,
|
|
22
21
|
setDashboard,
|
|
23
22
|
metadata,
|
|
24
|
-
display
|
|
23
|
+
display,
|
|
24
|
+
duration
|
|
25
25
|
}));
|
|
26
26
|
const { setVariableDefinitions } = useTemplateVariableActions();
|
|
27
27
|
const variables = useTemplateVariableDefinitions();
|
|
@@ -34,7 +34,7 @@ export function useDashboard() {
|
|
|
34
34
|
panels,
|
|
35
35
|
layouts,
|
|
36
36
|
variables,
|
|
37
|
-
duration
|
|
37
|
+
duration
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
const setDashboard = (dashboardResource)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/context/useDashboard.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { createPanelRef, DashboardResource, GridDefinition } from '@perses-dev/core';\nimport { PanelGroupDefinition, PanelGroupId, useDashboardStore } from './DashboardProvider';\nimport { useTemplateVariableActions, useTemplateVariableDefinitions } from './TemplateVariableProvider';\n\nexport function useDashboard() {\n const {\n panels,\n panelGroups,\n panelGroupOrder,\n
|
|
1
|
+
{"version":3,"sources":["../../src/context/useDashboard.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { createPanelRef, DashboardResource, GridDefinition } from '@perses-dev/core';\nimport { PanelGroupDefinition, PanelGroupId, useDashboardStore } from './DashboardProvider';\nimport { useTemplateVariableActions, useTemplateVariableDefinitions } from './TemplateVariableProvider';\n\nexport function useDashboard() {\n const {\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard: setDashboardResource,\n metadata,\n display,\n duration,\n } = useDashboardStore(({ panels, panelGroups, panelGroupOrder, setDashboard, metadata, display, duration }) => ({\n panels,\n panelGroups,\n panelGroupOrder,\n setDashboard,\n metadata,\n display,\n duration,\n }));\n const { setVariableDefinitions } = useTemplateVariableActions();\n const variables = useTemplateVariableDefinitions();\n const layouts = convertPanelGroupsToLayouts(panelGroups, panelGroupOrder);\n\n const dashboard: DashboardResource = {\n kind: 'Dashboard',\n metadata,\n spec: {\n display,\n panels,\n layouts,\n variables,\n duration,\n },\n };\n\n const setDashboard = (dashboardResource: DashboardResource) => {\n setVariableDefinitions(dashboardResource.spec.variables);\n setDashboardResource(dashboardResource);\n };\n\n return {\n dashboard,\n setDashboard,\n };\n}\n\nfunction convertPanelGroupsToLayouts(\n panelGroups: Record<number, PanelGroupDefinition>,\n panelGroupOrder: PanelGroupId[]\n): GridDefinition[] {\n const layouts: GridDefinition[] = [];\n panelGroupOrder.map((groupOrderId) => {\n const group = panelGroups[groupOrderId];\n if (group === undefined) {\n throw new Error('panel group not found');\n }\n const { title, isCollapsed, itemLayouts, itemPanelKeys } = group;\n let display = undefined;\n if (title) {\n display = {\n title,\n collapse: {\n open: !isCollapsed,\n },\n };\n }\n const layout: GridDefinition = {\n kind: 'Grid',\n spec: {\n display,\n items: itemLayouts.map((layout) => {\n const panelKey = itemPanelKeys[layout.i];\n if (panelKey === undefined) {\n throw new Error(`Missing panel key of layout ${layout.i}`);\n }\n return {\n x: layout.x,\n y: layout.y,\n width: layout.w,\n height: layout.h,\n content: createPanelRef(panelKey),\n };\n }),\n },\n };\n layouts.push(layout);\n });\n\n return layouts;\n}\n"],"names":["createPanelRef","useDashboardStore","useTemplateVariableActions","useTemplateVariableDefinitions","useDashboard","panels","panelGroups","panelGroupOrder","setDashboard","setDashboardResource","metadata","display","duration","setVariableDefinitions","variables","layouts","convertPanelGroupsToLayouts","dashboard","kind","spec","dashboardResource","map","groupOrderId","group","undefined","Error","title","isCollapsed","itemLayouts","itemPanelKeys","collapse","open","layout","items","panelKey","i","x","y","width","w","height","h","content","push"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/stories/decorators/WithDashboard.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { StoryFn, StoryContext } from '@storybook/react';\nimport { DashboardProvider, DashboardProviderProps } from '@perses-dev/dashboards';\nimport { EMPTY_DASHBOARD_RESOURCE } from './constants';\n\nexport type WithDashboardParameter = {\n props: Partial<DashboardProviderProps>;\n};\n\n// Type guard because storybook types parameters as `any`\nfunction isWithDashboardParameter(parameter: unknown | WithDashboardParameter): parameter is WithDashboardParameter {\n return !!parameter && typeof parameter === 'object' && 'props' in parameter;\n}\n\nexport const WithDashboard = (Story: StoryFn, context: StoryContext<unknown>) => {\n const initParameter = context.parameters.withDashboard;\n const parameter = isWithDashboardParameter(initParameter) ? initParameter : undefined;\n const props = parameter?.props;\n\n return (\n <DashboardProvider initialState={{ dashboardResource: EMPTY_DASHBOARD_RESOURCE }} {...props}>\n <Story />\n </DashboardProvider>\n );\n};\n"],"names":["DashboardProvider","EMPTY_DASHBOARD_RESOURCE","isWithDashboardParameter","parameter","WithDashboard","Story","context","initParameter","parameters","withDashboard","undefined","props","initialState","dashboardResource"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AACA,SAASA,iBAAiB,QAAgC,wBAAwB,CAAC;AACnF,SAASC,wBAAwB,QAAQ,aAAa,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../src/stories/decorators/WithDashboard.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { StoryFn, StoryContext } from '@storybook/react';\nimport { DashboardProvider, DashboardProviderProps } from '@perses-dev/dashboards';\nimport { EMPTY_DASHBOARD_RESOURCE } from './constants';\n\ndeclare module '@storybook/react' {\n interface Parameters {\n withDashboard?: WithDashboardParameter;\n }\n}\n\nexport type WithDashboardParameter = {\n props: Partial<DashboardProviderProps>;\n};\n\n// Type guard because storybook types parameters as `any`\nfunction isWithDashboardParameter(parameter: unknown | WithDashboardParameter): parameter is WithDashboardParameter {\n return !!parameter && typeof parameter === 'object' && 'props' in parameter;\n}\n\nexport const WithDashboard = (Story: StoryFn, context: StoryContext<unknown>) => {\n const initParameter = context.parameters.withDashboard;\n const parameter = isWithDashboardParameter(initParameter) ? initParameter : undefined;\n const props = parameter?.props;\n\n return (\n <DashboardProvider initialState={{ dashboardResource: EMPTY_DASHBOARD_RESOURCE }} {...props}>\n <Story />\n </DashboardProvider>\n );\n};\n"],"names":["DashboardProvider","EMPTY_DASHBOARD_RESOURCE","isWithDashboardParameter","parameter","WithDashboard","Story","context","initParameter","parameters","withDashboard","undefined","props","initialState","dashboardResource"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AACA,SAASA,iBAAiB,QAAgC,wBAAwB,CAAC;AACnF,SAASC,wBAAwB,QAAQ,aAAa,CAAC;AAYvD,yDAAyD;AACzD,SAASC,wBAAwB,CAACC,SAA2C,EAAuC;IAClH,OAAO,CAAC,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAIA,SAAS,CAAC;AAC9E,CAAC;AAED,OAAO,MAAMC,aAAa,GAAG,CAACC,KAAc,EAAEC,OAA8B,GAAK;IAC/E,MAAMC,aAAa,GAAGD,OAAO,CAACE,UAAU,CAACC,aAAa,AAAC;IACvD,MAAMN,SAAS,GAAGD,wBAAwB,CAACK,aAAa,CAAC,GAAGA,aAAa,GAAGG,SAAS,AAAC;IACtF,MAAMC,KAAK,GAAGR,SAAS,aAATA,SAAS,WAAO,GAAhBA,KAAAA,CAAgB,GAAhBA,SAAS,CAAEQ,KAAK,AAAC;IAE/B,qBACE,KAACX,iBAAiB;QAACY,YAAY,EAAE;YAAEC,iBAAiB,EAAEZ,wBAAwB;SAAE;QAAG,GAAGU,KAAK;kBACzF,cAAA,KAACN,KAAK,KAAG;MACS,CACpB;AACJ,CAAC,CAAC"}
|
|
@@ -12,60 +12,15 @@
|
|
|
12
12
|
// limitations under the License.
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
import { DatasourceStoreProvider } from '@perses-dev/dashboards';
|
|
15
|
-
import {
|
|
15
|
+
import { defaultDatasourceProps } from '../../test';
|
|
16
16
|
// Type guard because storybook types parameters as `any`
|
|
17
17
|
function isWithDatasourceStoreParameter(parameter) {
|
|
18
18
|
return !!parameter && typeof parameter === 'object' && 'props' in parameter;
|
|
19
19
|
}
|
|
20
|
-
const prometheusDemoUrl = 'https://prometheus.demo.do.prometheus.io';
|
|
21
|
-
const prometheusDemo = {
|
|
22
|
-
kind: 'GlobalDatasource',
|
|
23
|
-
metadata: {
|
|
24
|
-
name: 'PrometheusDemo',
|
|
25
|
-
created_at: '0001-01-01T00:00:00Z',
|
|
26
|
-
updated_at: '0001-01-01T00:00:00Z',
|
|
27
|
-
version: 0
|
|
28
|
-
},
|
|
29
|
-
spec: {
|
|
30
|
-
default: true,
|
|
31
|
-
plugin: {
|
|
32
|
-
kind: 'PrometheusDatasource',
|
|
33
|
-
spec: {
|
|
34
|
-
direct_url: prometheusDemoUrl
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
20
|
export const WithDatasourceStore = (Story, context)=>{
|
|
40
21
|
const initParameter = context.parameters.withDatasourceStore;
|
|
41
22
|
const parameter = isWithDatasourceStoreParameter(initParameter) ? initParameter : undefined;
|
|
42
23
|
const props = parameter === null || parameter === void 0 ? void 0 : parameter.props;
|
|
43
|
-
// This default currently defines the bare minimum to get a story working in
|
|
44
|
-
// the `Dashboard` storybook with the Prometheus demo api. We'll likely want
|
|
45
|
-
// to expand it to do more in the future.
|
|
46
|
-
const defaultDatasourceProps = {
|
|
47
|
-
dashboardResource: EMPTY_DASHBOARD_RESOURCE,
|
|
48
|
-
datasourceApi: {
|
|
49
|
-
getDatasource: ()=>{
|
|
50
|
-
return Promise.resolve(undefined);
|
|
51
|
-
},
|
|
52
|
-
getGlobalDatasource: (selector)=>{
|
|
53
|
-
if (selector.kind === 'PrometheusDatasource') {
|
|
54
|
-
return Promise.resolve({
|
|
55
|
-
resource: prometheusDemo,
|
|
56
|
-
proxyUrl: prometheusDemoUrl
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
return Promise.resolve(undefined);
|
|
60
|
-
},
|
|
61
|
-
listDatasources: ()=>{
|
|
62
|
-
return Promise.resolve([]);
|
|
63
|
-
},
|
|
64
|
-
listGlobalDatasources: ()=>{
|
|
65
|
-
return Promise.resolve([]);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
24
|
return /*#__PURE__*/ _jsx(DatasourceStoreProvider, {
|
|
70
25
|
...defaultDatasourceProps,
|
|
71
26
|
...props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/stories/decorators/WithDatasourceStore.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { StoryFn, StoryContext } from '@storybook/react';\nimport { DatasourceStoreProvider, DatasourceStoreProviderProps } from '@perses-dev/dashboards';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/stories/decorators/WithDatasourceStore.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { StoryFn, StoryContext } from '@storybook/react';\nimport { DatasourceStoreProvider, DatasourceStoreProviderProps } from '@perses-dev/dashboards';\nimport { defaultDatasourceProps } from '../../test';\n\ndeclare module '@storybook/react' {\n interface Parameters {\n withDatasourceStore?: WithDatasourceStoreParameter;\n }\n}\n\nexport type WithDatasourceStoreParameter = {\n props: Partial<DatasourceStoreProviderProps>;\n};\n\n// Type guard because storybook types parameters as `any`\nfunction isWithDatasourceStoreParameter(\n parameter: unknown | WithDatasourceStoreParameter\n): parameter is WithDatasourceStoreParameter {\n return !!parameter && typeof parameter === 'object' && 'props' in parameter;\n}\n\nexport const WithDatasourceStore = (Story: StoryFn, context: StoryContext<unknown>) => {\n const initParameter = context.parameters.withDatasourceStore;\n const parameter = isWithDatasourceStoreParameter(initParameter) ? initParameter : undefined;\n const props = parameter?.props;\n\n return (\n <DatasourceStoreProvider {...defaultDatasourceProps} {...props}>\n <Story />\n </DatasourceStoreProvider>\n );\n};\n"],"names":["DatasourceStoreProvider","defaultDatasourceProps","isWithDatasourceStoreParameter","parameter","WithDatasourceStore","Story","context","initParameter","parameters","withDatasourceStore","undefined","props"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AACA,SAASA,uBAAuB,QAAsC,wBAAwB,CAAC;AAC/F,SAASC,sBAAsB,QAAQ,YAAY,CAAC;AAYpD,yDAAyD;AACzD,SAASC,8BAA8B,CACrCC,SAAiD,EACN;IAC3C,OAAO,CAAC,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAIA,SAAS,CAAC;AAC9E,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAG,CAACC,KAAc,EAAEC,OAA8B,GAAK;IACrF,MAAMC,aAAa,GAAGD,OAAO,CAACE,UAAU,CAACC,mBAAmB,AAAC;IAC7D,MAAMN,SAAS,GAAGD,8BAA8B,CAACK,aAAa,CAAC,GAAGA,aAAa,GAAGG,SAAS,AAAC;IAC5F,MAAMC,KAAK,GAAGR,SAAS,aAATA,SAAS,WAAO,GAAhBA,KAAAA,CAAgB,GAAhBA,SAAS,CAAEQ,KAAK,AAAC;IAE/B,qBACE,KAACX,uBAAuB;QAAE,GAAGC,sBAAsB;QAAG,GAAGU,KAAK;kBAC5D,cAAA,KAACN,KAAK,KAAG;MACe,CAC1B;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/stories/decorators/WithTemplateVariables.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { StoryFn, StoryContext } from '@storybook/react';\nimport { TemplateVariableProvider, TemplateVariableProviderProps } from '@perses-dev/dashboards';\n\nexport type WithTemplateVariableParameter = {\n props: Partial<TemplateVariableProviderProps>;\n};\n\n// Type guard because storybook types parameters as `any`\nfunction isWithTemplateVariableParameter(\n parameter: unknown | WithTemplateVariableParameter\n): parameter is WithTemplateVariableParameter {\n return !!parameter && typeof parameter === 'object' && 'props' in parameter;\n}\n\nexport const WithTemplateVariables = (Story: StoryFn, context: StoryContext<unknown>) => {\n const initParameter = context.parameters.withTemplateVariables;\n const parameter = isWithTemplateVariableParameter(initParameter) ? initParameter : undefined;\n const props = parameter?.props;\n\n return (\n <TemplateVariableProvider {...props}>\n <Story />\n </TemplateVariableProvider>\n );\n};\n"],"names":["TemplateVariableProvider","isWithTemplateVariableParameter","parameter","WithTemplateVariables","Story","context","initParameter","parameters","withTemplateVariables","undefined","props"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AACA,SAASA,wBAAwB,QAAuC,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../src/stories/decorators/WithTemplateVariables.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { StoryFn, StoryContext } from '@storybook/react';\nimport { TemplateVariableProvider, TemplateVariableProviderProps } from '@perses-dev/dashboards';\n\ndeclare module '@storybook/react' {\n interface Parameters {\n withTemplateVariables?: WithTemplateVariableParameter;\n }\n}\n\nexport type WithTemplateVariableParameter = {\n props: Partial<TemplateVariableProviderProps>;\n};\n\n// Type guard because storybook types parameters as `any`\nfunction isWithTemplateVariableParameter(\n parameter: unknown | WithTemplateVariableParameter\n): parameter is WithTemplateVariableParameter {\n return !!parameter && typeof parameter === 'object' && 'props' in parameter;\n}\n\nexport const WithTemplateVariables = (Story: StoryFn, context: StoryContext<unknown>) => {\n const initParameter = context.parameters.withTemplateVariables;\n const parameter = isWithTemplateVariableParameter(initParameter) ? initParameter : undefined;\n const props = parameter?.props;\n\n return (\n <TemplateVariableProvider {...props}>\n <Story />\n </TemplateVariableProvider>\n );\n};\n"],"names":["TemplateVariableProvider","isWithTemplateVariableParameter","parameter","WithTemplateVariables","Story","context","initParameter","parameters","withTemplateVariables","undefined","props"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;AACA,SAASA,wBAAwB,QAAuC,wBAAwB,CAAC;AAYjG,yDAAyD;AACzD,SAASC,+BAA+B,CACtCC,SAAkD,EACN;IAC5C,OAAO,CAAC,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,IAAI,OAAO,IAAIA,SAAS,CAAC;AAC9E,CAAC;AAED,OAAO,MAAMC,qBAAqB,GAAG,CAACC,KAAc,EAAEC,OAA8B,GAAK;IACvF,MAAMC,aAAa,GAAGD,OAAO,CAACE,UAAU,CAACC,qBAAqB,AAAC;IAC/D,MAAMN,SAAS,GAAGD,+BAA+B,CAACK,aAAa,CAAC,GAAGA,aAAa,GAAGG,SAAS,AAAC;IAC7F,MAAMC,KAAK,GAAGR,SAAS,aAATA,SAAS,WAAO,GAAhBA,KAAAA,CAAgB,GAAhBA,SAAS,CAAEQ,KAAK,AAAC;IAE/B,qBACE,KAACV,wBAAwB;QAAE,GAAGU,KAAK;kBACjC,cAAA,KAACN,KAAK,KAAG;MACgB,CAC3B;AACJ,CAAC,CAAC"}
|
|
@@ -13,10 +13,6 @@
|
|
|
13
13
|
export * from './constants';
|
|
14
14
|
export * from './WithDashboard';
|
|
15
15
|
export * from './WithDatasourceStore';
|
|
16
|
-
export * from './WithPluginRegistry';
|
|
17
|
-
export * from './WithQueryClient';
|
|
18
|
-
export * from './WithQueryParams';
|
|
19
16
|
export * from './WithTemplateVariables';
|
|
20
|
-
export * from './WithTimeRange';
|
|
21
17
|
|
|
22
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/stories/decorators/index.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './constants';\nexport * from './WithDashboard';\nexport * from './WithDatasourceStore';\nexport * from './
|
|
1
|
+
{"version":3,"sources":["../../../src/stories/decorators/index.ts"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nexport * from './constants';\nexport * from './WithDashboard';\nexport * from './WithDatasourceStore';\nexport * from './WithTemplateVariables';\n"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GlobalDatasource } from '@perses-dev/core';
|
|
2
|
+
import { DatasourceStoreProviderProps } from '../context';
|
|
3
|
+
export declare const prometheusDemoUrl = "https://prometheus.demo.do.prometheus.io";
|
|
4
|
+
export declare const prometheusDemo: GlobalDatasource;
|
|
5
|
+
export declare const defaultDatasourceProps: Pick<DatasourceStoreProviderProps, 'datasourceApi' | 'dashboardResource'>;
|
|
6
|
+
//# sourceMappingURL=datasource-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasource-provider.d.ts","sourceRoot":"","sources":["../../src/test/datasource-provider.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAG1D,eAAO,MAAM,iBAAiB,6CAA6C,CAAC;AAC5E,eAAO,MAAM,cAAc,EAAE,gBAenB,CAAC;AAKX,eAAO,MAAM,sBAAsB,EAAE,IAAI,CAAC,4BAA4B,EAAE,eAAe,GAAG,mBAAmB,CAoB5G,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Copyright 2023 The Perses Authors
|
|
2
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
// you may not use this file except in compliance with the License.
|
|
4
|
+
// You may obtain a copy of the License at
|
|
5
|
+
//
|
|
6
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
7
|
+
//
|
|
8
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
9
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
10
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
|
+
// See the License for the specific language governing permissions and
|
|
12
|
+
// limitations under the License.
|
|
13
|
+
import { getTestDashboard } from './dashboard-provider';
|
|
14
|
+
export const prometheusDemoUrl = 'https://prometheus.demo.do.prometheus.io';
|
|
15
|
+
export const prometheusDemo = {
|
|
16
|
+
kind: 'GlobalDatasource',
|
|
17
|
+
metadata: {
|
|
18
|
+
name: 'PrometheusDemo',
|
|
19
|
+
created_at: '0001-01-01T00:00:00Z',
|
|
20
|
+
updated_at: '0001-01-01T00:00:00Z',
|
|
21
|
+
version: 0
|
|
22
|
+
},
|
|
23
|
+
spec: {
|
|
24
|
+
default: true,
|
|
25
|
+
plugin: {
|
|
26
|
+
kind: 'PrometheusDatasource',
|
|
27
|
+
spec: {
|
|
28
|
+
direct_url: prometheusDemoUrl
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
// This default currently defines the bare minimum to get a story working in
|
|
34
|
+
// the `Dashboard` storybook with the Prometheus demo api. We'll likely want
|
|
35
|
+
// to expand it to do more in the future.
|
|
36
|
+
export const defaultDatasourceProps = {
|
|
37
|
+
dashboardResource: getTestDashboard(),
|
|
38
|
+
datasourceApi: {
|
|
39
|
+
getDatasource: ()=>{
|
|
40
|
+
return Promise.resolve(undefined);
|
|
41
|
+
},
|
|
42
|
+
getGlobalDatasource: (selector)=>{
|
|
43
|
+
if (selector.kind === 'PrometheusDatasource') {
|
|
44
|
+
return Promise.resolve({
|
|
45
|
+
resource: prometheusDemo,
|
|
46
|
+
proxyUrl: prometheusDemoUrl
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return Promise.resolve(undefined);
|
|
50
|
+
},
|
|
51
|
+
listDatasources: ()=>{
|
|
52
|
+
return Promise.resolve([]);
|
|
53
|
+
},
|
|
54
|
+
listGlobalDatasources: ()=>{
|
|
55
|
+
return Promise.resolve([]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=datasource-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/test/datasource-provider.tsx"],"sourcesContent":["// Copyright 2023 The Perses Authors\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport { GlobalDatasource } from '@perses-dev/core';\nimport { DatasourceStoreProviderProps } from '../context';\nimport { getTestDashboard } from './dashboard-provider';\n\nexport const prometheusDemoUrl = 'https://prometheus.demo.do.prometheus.io';\nexport const prometheusDemo: GlobalDatasource = {\n kind: 'GlobalDatasource',\n metadata: {\n name: 'PrometheusDemo',\n created_at: '0001-01-01T00:00:00Z',\n updated_at: '0001-01-01T00:00:00Z',\n version: 0,\n },\n spec: {\n default: true,\n plugin: {\n kind: 'PrometheusDatasource',\n spec: { direct_url: prometheusDemoUrl },\n },\n },\n} as const;\n\n// This default currently defines the bare minimum to get a story working in\n// the `Dashboard` storybook with the Prometheus demo api. We'll likely want\n// to expand it to do more in the future.\nexport const defaultDatasourceProps: Pick<DatasourceStoreProviderProps, 'datasourceApi' | 'dashboardResource'> = {\n dashboardResource: getTestDashboard(),\n datasourceApi: {\n getDatasource: () => {\n return Promise.resolve(undefined);\n },\n getGlobalDatasource: (selector) => {\n if (selector.kind === 'PrometheusDatasource') {\n return Promise.resolve({ resource: prometheusDemo, proxyUrl: prometheusDemoUrl });\n }\n\n return Promise.resolve(undefined);\n },\n listDatasources: () => {\n return Promise.resolve([]);\n },\n listGlobalDatasources: () => {\n return Promise.resolve([]);\n },\n },\n};\n"],"names":["getTestDashboard","prometheusDemoUrl","prometheusDemo","kind","metadata","name","created_at","updated_at","version","spec","default","plugin","direct_url","defaultDatasourceProps","dashboardResource","datasourceApi","getDatasource","Promise","resolve","undefined","getGlobalDatasource","selector","resource","proxyUrl","listDatasources","listGlobalDatasources"],"mappings":"AAAA,oCAAoC;AACpC,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,6CAA6C;AAC7C,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAIjC,SAASA,gBAAgB,QAAQ,sBAAsB,CAAC;AAExD,OAAO,MAAMC,iBAAiB,GAAG,0CAA0C,CAAC;AAC5E,OAAO,MAAMC,cAAc,GAAqB;IAC9CC,IAAI,EAAE,kBAAkB;IACxBC,QAAQ,EAAE;QACRC,IAAI,EAAE,gBAAgB;QACtBC,UAAU,EAAE,sBAAsB;QAClCC,UAAU,EAAE,sBAAsB;QAClCC,OAAO,EAAE,CAAC;KACX;IACDC,IAAI,EAAE;QACJC,OAAO,EAAE,IAAI;QACbC,MAAM,EAAE;YACNR,IAAI,EAAE,sBAAsB;YAC5BM,IAAI,EAAE;gBAAEG,UAAU,EAAEX,iBAAiB;aAAE;SACxC;KACF;CACF,AAAS,CAAC;AAEX,4EAA4E;AAC5E,4EAA4E;AAC5E,yCAAyC;AACzC,OAAO,MAAMY,sBAAsB,GAA8E;IAC/GC,iBAAiB,EAAEd,gBAAgB,EAAE;IACrCe,aAAa,EAAE;QACbC,aAAa,EAAE,IAAM;YACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC,CAAC;QACpC,CAAC;QACDC,mBAAmB,EAAE,CAACC,QAAQ,GAAK;YACjC,IAAIA,QAAQ,CAAClB,IAAI,KAAK,sBAAsB,EAAE;gBAC5C,OAAOc,OAAO,CAACC,OAAO,CAAC;oBAAEI,QAAQ,EAAEpB,cAAc;oBAAEqB,QAAQ,EAAEtB,iBAAiB;iBAAE,CAAC,CAAC;YACpF,CAAC;YAED,OAAOgB,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC,CAAC;QACpC,CAAC;QACDK,eAAe,EAAE,IAAM;YACrB,OAAOP,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACDO,qBAAqB,EAAE,IAAM;YAC3B,OAAOR,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;KACF;CACF,CAAC"}
|