@perses-dev/dashboards 0.29.1 → 0.31.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.
- package/dist/cjs/components/DashboardStickyToolbar/DashboardStickyToolbar.js +79 -0
- package/dist/cjs/{stories/decorators/WithQueryClient.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/GridTitle.js +30 -9
- package/dist/cjs/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +88 -0
- package/dist/cjs/{stories/decorators/WithQueryParams.js → components/SaveChangesConfirmationDialog/index.js} +11 -12
- package/dist/cjs/components/SaveDashboardButton/SaveDashboardButton.js +78 -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 +2 -0
- package/dist/cjs/context/DashboardProvider/DashboardProvider.js +5 -4
- package/dist/cjs/context/DashboardProvider/dashboard-provider-api.js +13 -4
- 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 +37 -0
- package/dist/cjs/context/useDashboard.js +4 -4
- package/dist/cjs/stories/decorators/index.js +0 -5
- 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.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/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/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.d.ts +3 -0
- package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.d.ts.map +1 -0
- package/dist/components/SaveChangesConfirmationDialog/SaveChangesConfirmationDialog.js +82 -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 +72 -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 +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -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 +5 -4
- package/dist/context/DashboardProvider/DashboardProvider.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/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 +4 -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 +4 -0
- package/dist/context/TemplateVariableProvider/utils.d.ts.map +1 -0
- package/dist/context/TemplateVariableProvider/utils.js +33 -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.map +1 -1
- package/dist/stories/decorators/WithTemplateVariables.js.map +1 -1
- package/dist/stories/decorators/index.js +0 -5
- package/dist/stories/decorators/index.js.map +1 -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 +6 -6
- package/dist/cjs/stories/decorators/WithDataQueriesProvider.js +0 -39
- package/dist/cjs/stories/decorators/WithPluginRegistry.js +0 -94
- package/dist/cjs/stories/decorators/WithTimeRange.js +0 -38
- package/dist/stories/decorators/WithDataQueriesProvider.js +0 -33
- package/dist/stories/decorators/WithDataQueriesProvider.js.map +0 -1
- package/dist/stories/decorators/WithPluginRegistry.js +0 -49
- 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
|
@@ -24,16 +24,9 @@ const _material = require("@mui/material");
|
|
|
24
24
|
const _useImmer = require("use-immer");
|
|
25
25
|
const _pluginSystem = require("@perses-dev/plugin-system");
|
|
26
26
|
const _components = require("@perses-dev/components");
|
|
27
|
-
const _refresh = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/Refresh"));
|
|
28
|
-
const _clipboardOutline = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/ClipboardOutline"));
|
|
29
|
-
const _constants = require("../../../constants");
|
|
30
27
|
const _variableModel = require("../variable-model");
|
|
28
|
+
const _variablePreview = require("./VariablePreview");
|
|
31
29
|
const _variableEditorFormModel = require("./variable-editor-form-model");
|
|
32
|
-
function _interopRequireDefault(obj) {
|
|
33
|
-
return obj && obj.__esModule ? obj : {
|
|
34
|
-
default: obj
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
30
|
function _getRequireWildcardCache(nodeInterop) {
|
|
38
31
|
if (typeof WeakMap !== "function") return null;
|
|
39
32
|
var cacheBabelInterop = new WeakMap();
|
|
@@ -73,7 +66,6 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
73
66
|
}
|
|
74
67
|
return newObj;
|
|
75
68
|
}
|
|
76
|
-
const DEFAULT_MAX_PREVIEW_VALUES = 50;
|
|
77
69
|
// TODO: Replace with proper validation library
|
|
78
70
|
function getValidation(state) {
|
|
79
71
|
/** Name validation */ let name = null;
|
|
@@ -89,100 +81,22 @@ function getValidation(state) {
|
|
|
89
81
|
isValid: !name
|
|
90
82
|
};
|
|
91
83
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
children: children
|
|
96
|
-
});
|
|
97
|
-
function VariableListPreview({ definition , onRefresh }) {
|
|
98
|
-
const { data , isFetching , error } = (0, _variableModel.useListVariablePluginValues)(definition);
|
|
99
|
-
const [maxValues, setMaxValues] = (0, _react.useState)(DEFAULT_MAX_PREVIEW_VALUES);
|
|
100
|
-
const showAll = ()=>{
|
|
101
|
-
setMaxValues(undefined);
|
|
102
|
-
};
|
|
103
|
-
let notShown = 0;
|
|
104
|
-
if (data && (data === null || data === void 0 ? void 0 : data.length) > 0 && maxValues) {
|
|
105
|
-
notShown = data.length - maxValues;
|
|
106
|
-
}
|
|
107
|
-
const errorMessage = error === null || error === void 0 ? void 0 : error.message;
|
|
108
|
-
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Box, {
|
|
109
|
-
children: [
|
|
110
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
111
|
-
direction: 'row',
|
|
112
|
-
spacing: 1,
|
|
113
|
-
alignItems: "center",
|
|
114
|
-
children: [
|
|
115
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
116
|
-
variant: "caption",
|
|
117
|
-
children: "Preview Values"
|
|
118
|
-
}),
|
|
119
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.InfoTooltip, {
|
|
120
|
-
description: _constants.TOOLTIP_TEXT.refreshVariableValues,
|
|
121
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.IconButton, {
|
|
122
|
-
onClick: onRefresh,
|
|
123
|
-
size: "small",
|
|
124
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_refresh.default, {})
|
|
125
|
-
})
|
|
126
|
-
}),
|
|
127
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.InfoTooltip, {
|
|
128
|
-
description: _constants.TOOLTIP_TEXT.copyVariableValues,
|
|
129
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.IconButton, {
|
|
130
|
-
onClick: async ()=>{
|
|
131
|
-
if (data === null || data === void 0 ? void 0 : data.length) {
|
|
132
|
-
await navigator.clipboard.writeText(data.map((d)=>d.label).join(','));
|
|
133
|
-
alert('Copied to clipboard!');
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
size: "small",
|
|
137
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_clipboardOutline.default, {})
|
|
138
|
-
})
|
|
139
|
-
})
|
|
140
|
-
]
|
|
141
|
-
}),
|
|
142
|
-
errorMessage && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Alert, {
|
|
143
|
-
severity: "error",
|
|
144
|
-
children: errorMessage
|
|
145
|
-
}),
|
|
146
|
-
isFetching && 'Loading...',
|
|
147
|
-
(data === null || data === void 0 ? void 0 : data.length) === 0 && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Alert, {
|
|
148
|
-
severity: "info",
|
|
149
|
-
children: "No results"
|
|
150
|
-
}),
|
|
151
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
152
|
-
children: [
|
|
153
|
-
data === null || data === void 0 ? void 0 : data.slice(0, maxValues).map((val)=>/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Chip, {
|
|
154
|
-
sx: {
|
|
155
|
-
mr: 1,
|
|
156
|
-
mb: 1
|
|
157
|
-
},
|
|
158
|
-
size: "small",
|
|
159
|
-
label: val.label
|
|
160
|
-
}, val.value)),
|
|
161
|
-
notShown > 0 && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Chip, {
|
|
162
|
-
onClick: showAll,
|
|
163
|
-
variant: "outlined",
|
|
164
|
-
sx: {
|
|
165
|
-
mr: 1,
|
|
166
|
-
mb: 1
|
|
167
|
-
},
|
|
168
|
-
size: "small",
|
|
169
|
-
label: `+${notShown} more`
|
|
170
|
-
})
|
|
171
|
-
]
|
|
172
|
-
})
|
|
173
|
-
]
|
|
84
|
+
function FallbackPreview() {
|
|
85
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsx)("div", {
|
|
86
|
+
children: "Error previewing values"
|
|
174
87
|
});
|
|
175
88
|
}
|
|
176
|
-
function VariableEditForm(
|
|
89
|
+
function VariableEditForm(props) {
|
|
90
|
+
const { initialVariableDefinition , onChange , onCancel } = props;
|
|
177
91
|
const [state, setState] = (0, _useImmer.useImmer)((0, _variableEditorFormModel.getInitialState)(initialVariableDefinition));
|
|
178
92
|
const validation = (0, _react.useMemo)(()=>getValidation(state), [
|
|
179
93
|
state
|
|
180
94
|
]);
|
|
181
|
-
const [previewKey, setPreviewKey] = _react.
|
|
95
|
+
const [previewKey, setPreviewKey] = (0, _react.useState)(0);
|
|
182
96
|
const refreshPreview = ()=>{
|
|
183
97
|
setPreviewKey((prev)=>prev + 1);
|
|
184
98
|
};
|
|
185
|
-
/** We use the `previewKey` that we increment to know when to
|
|
99
|
+
/** We use the `previewKey` that we increment to know when to explicitly update the
|
|
186
100
|
* spec that will be used for preview. The reason why we do this is to avoid
|
|
187
101
|
* having to re-fetch the values when the user is still editing the spec.
|
|
188
102
|
*/ const previewSpec = (0, _react.useMemo)(()=>{
|
|
@@ -238,9 +152,6 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
|
|
|
238
152
|
overflowY: 'scroll'
|
|
239
153
|
},
|
|
240
154
|
children: [
|
|
241
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(SectionHeader, {
|
|
242
|
-
children: "General"
|
|
243
|
-
}),
|
|
244
155
|
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Grid, {
|
|
245
156
|
container: true,
|
|
246
157
|
spacing: 2,
|
|
@@ -248,7 +159,7 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
|
|
|
248
159
|
children: [
|
|
249
160
|
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Grid, {
|
|
250
161
|
item: true,
|
|
251
|
-
xs:
|
|
162
|
+
xs: 8,
|
|
252
163
|
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
253
164
|
required: true,
|
|
254
165
|
error: !!validation.name,
|
|
@@ -265,7 +176,35 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
|
|
|
265
176
|
}),
|
|
266
177
|
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Grid, {
|
|
267
178
|
item: true,
|
|
268
|
-
xs:
|
|
179
|
+
xs: 4,
|
|
180
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
181
|
+
fullWidth: true,
|
|
182
|
+
label: "Display Label",
|
|
183
|
+
value: state.title || '',
|
|
184
|
+
onChange: (v)=>{
|
|
185
|
+
setState((draft)=>{
|
|
186
|
+
draft.title = v.target.value;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
})
|
|
190
|
+
}),
|
|
191
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Grid, {
|
|
192
|
+
item: true,
|
|
193
|
+
xs: 8,
|
|
194
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
195
|
+
fullWidth: true,
|
|
196
|
+
label: "Description",
|
|
197
|
+
value: state.description,
|
|
198
|
+
onChange: (v)=>{
|
|
199
|
+
setState((draft)=>{
|
|
200
|
+
draft.description = v.target.value;
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
})
|
|
204
|
+
}),
|
|
205
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Grid, {
|
|
206
|
+
item: true,
|
|
207
|
+
xs: 4,
|
|
269
208
|
children: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.FormControl, {
|
|
270
209
|
fullWidth: true,
|
|
271
210
|
children: [
|
|
@@ -290,50 +229,28 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
|
|
|
290
229
|
})
|
|
291
230
|
]
|
|
292
231
|
})
|
|
293
|
-
}),
|
|
294
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Grid, {
|
|
295
|
-
item: true,
|
|
296
|
-
xs: 6,
|
|
297
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
298
|
-
fullWidth: true,
|
|
299
|
-
label: "Display Label",
|
|
300
|
-
value: state.title || '',
|
|
301
|
-
onChange: (v)=>{
|
|
302
|
-
setState((draft)=>{
|
|
303
|
-
draft.title = v.target.value;
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
})
|
|
307
|
-
}),
|
|
308
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Grid, {
|
|
309
|
-
item: true,
|
|
310
|
-
xs: 12,
|
|
311
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
312
|
-
fullWidth: true,
|
|
313
|
-
label: "Description",
|
|
314
|
-
value: state.description,
|
|
315
|
-
onChange: (v)=>{
|
|
316
|
-
setState((draft)=>{
|
|
317
|
-
draft.description = v.target.value;
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
})
|
|
321
232
|
})
|
|
322
233
|
]
|
|
323
234
|
}),
|
|
235
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Divider, {}),
|
|
324
236
|
state.kind === 'TextVariable' && /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
325
237
|
children: [
|
|
326
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(
|
|
238
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
239
|
+
py: 1,
|
|
240
|
+
variant: "subtitle1",
|
|
327
241
|
children: "Text Options"
|
|
328
242
|
}),
|
|
329
|
-
/*#__PURE__*/ (0, _jsxRuntime.
|
|
330
|
-
container: true,
|
|
243
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
331
244
|
spacing: 2,
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
245
|
+
children: [
|
|
246
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Box, {
|
|
247
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_variablePreview.VariablePreview, {
|
|
248
|
+
values: [
|
|
249
|
+
state.textVariableFields.value
|
|
250
|
+
]
|
|
251
|
+
})
|
|
252
|
+
}),
|
|
253
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
337
254
|
label: "Value",
|
|
338
255
|
value: state.textVariableFields.value,
|
|
339
256
|
onChange: (v)=>{
|
|
@@ -342,30 +259,43 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
|
|
|
342
259
|
});
|
|
343
260
|
}
|
|
344
261
|
})
|
|
345
|
-
|
|
262
|
+
]
|
|
346
263
|
})
|
|
347
264
|
]
|
|
348
265
|
}),
|
|
349
266
|
state.kind === 'ListVariable' && /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
350
267
|
children: [
|
|
351
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(
|
|
268
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
269
|
+
py: 1,
|
|
270
|
+
variant: "subtitle1",
|
|
352
271
|
children: "List Options"
|
|
353
272
|
}),
|
|
354
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.
|
|
355
|
-
container: true,
|
|
273
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
356
274
|
spacing: 2,
|
|
357
275
|
mb: 2,
|
|
358
276
|
children: [
|
|
359
|
-
/*#__PURE__*/ (0, _jsxRuntime.
|
|
360
|
-
|
|
361
|
-
|
|
277
|
+
state.listVariableFields.plugin.kind ? /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Box, {
|
|
278
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.ErrorBoundary, {
|
|
279
|
+
FallbackComponent: FallbackPreview,
|
|
280
|
+
resetKeys: [
|
|
281
|
+
previewSpec
|
|
282
|
+
],
|
|
283
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_variablePreview.VariableListPreview, {
|
|
284
|
+
definition: previewSpec,
|
|
285
|
+
onRefresh: refreshPreview
|
|
286
|
+
})
|
|
287
|
+
})
|
|
288
|
+
}) : /*#__PURE__*/ (0, _jsxRuntime.jsx)(_variablePreview.VariablePreview, {
|
|
289
|
+
isLoading: true
|
|
290
|
+
}),
|
|
291
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
362
292
|
children: [
|
|
363
293
|
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.ClickAwayListener, {
|
|
364
294
|
onClickAway: ()=>refreshPreview(),
|
|
365
295
|
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Box, {})
|
|
366
296
|
}),
|
|
367
297
|
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_pluginSystem.PluginEditor, {
|
|
368
|
-
width:
|
|
298
|
+
width: "100%",
|
|
369
299
|
pluginType: "Variable",
|
|
370
300
|
pluginKindLabel: "Source",
|
|
371
301
|
value: state.listVariableFields.plugin,
|
|
@@ -377,73 +307,69 @@ function VariableEditForm({ initialVariableDefinition , onChange , onCancel })
|
|
|
377
307
|
})
|
|
378
308
|
]
|
|
379
309
|
}),
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
label: "Capturing Regexp Filter",
|
|
389
|
-
value: state.listVariableFields.capturing_regexp || '',
|
|
390
|
-
onChange: (e)=>{
|
|
391
|
-
setState((draft)=>{
|
|
310
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Stack, {
|
|
311
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
|
|
312
|
+
label: "Capturing Regexp Filter",
|
|
313
|
+
value: state.listVariableFields.capturing_regexp || '',
|
|
314
|
+
onChange: (e)=>{
|
|
315
|
+
setState((draft)=>{
|
|
316
|
+
if (e.target.value) {
|
|
317
|
+
// TODO: do a better fix, if empty string => it should skip the filter
|
|
392
318
|
draft.listVariableFields.capturing_regexp = e.target.value;
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
resetKeys: [
|
|
401
|
-
previewSpec
|
|
402
|
-
],
|
|
403
|
-
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(VariableListPreview, {
|
|
404
|
-
onRefresh: refreshPreview,
|
|
405
|
-
definition: previewSpec
|
|
406
|
-
})
|
|
407
|
-
})
|
|
408
|
-
]
|
|
319
|
+
} else {
|
|
320
|
+
draft.listVariableFields.capturing_regexp = undefined;
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
},
|
|
324
|
+
helperText: "Optional, if you want to filter on captured result."
|
|
325
|
+
})
|
|
409
326
|
})
|
|
410
327
|
]
|
|
411
328
|
}),
|
|
412
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsx)(
|
|
329
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Divider, {}),
|
|
330
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
331
|
+
py: 1,
|
|
332
|
+
variant: "subtitle1",
|
|
413
333
|
children: "Dropdown Options"
|
|
414
334
|
}),
|
|
415
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.
|
|
416
|
-
|
|
417
|
-
spacing: 1,
|
|
418
|
-
mb: 1,
|
|
335
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
336
|
+
spacing: "2",
|
|
419
337
|
children: [
|
|
420
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.
|
|
421
|
-
item: true,
|
|
422
|
-
xs: 12,
|
|
338
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
423
339
|
children: [
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
340
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.FormControlLabel, {
|
|
341
|
+
control: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Switch, {
|
|
342
|
+
checked: state.listVariableFields.allowMultiple,
|
|
343
|
+
onChange: (e)=>{
|
|
344
|
+
setState((draft)=>{
|
|
345
|
+
draft.listVariableFields.allowMultiple = e.target.checked;
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}),
|
|
349
|
+
label: "Allow Multiple Values"
|
|
350
|
+
}),
|
|
351
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
352
|
+
variant: "caption",
|
|
353
|
+
children: "Enables multiple values to be selected at the same time"
|
|
432
354
|
})
|
|
433
355
|
]
|
|
434
356
|
}),
|
|
435
|
-
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.
|
|
436
|
-
item: true,
|
|
437
|
-
xs: 12,
|
|
357
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
438
358
|
children: [
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
359
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.FormControlLabel, {
|
|
360
|
+
control: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Switch, {
|
|
361
|
+
checked: state.listVariableFields.allowAll,
|
|
362
|
+
onChange: (e)=>{
|
|
363
|
+
setState((draft)=>{
|
|
364
|
+
draft.listVariableFields.allowAll = e.target.checked;
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}),
|
|
368
|
+
label: "Allow All option"
|
|
369
|
+
}),
|
|
370
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
371
|
+
variant: "caption",
|
|
372
|
+
children: "Enables an option to include all variable values"
|
|
447
373
|
})
|
|
448
374
|
]
|
|
449
375
|
})
|
|
@@ -0,0 +1,178 @@
|
|
|
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
|
+
"use strict";
|
|
14
|
+
Object.defineProperty(exports, "__esModule", {
|
|
15
|
+
value: true
|
|
16
|
+
});
|
|
17
|
+
function _export(target, all) {
|
|
18
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: all[name]
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
_export(exports, {
|
|
24
|
+
VariablePreview: ()=>VariablePreview,
|
|
25
|
+
VariableListPreview: ()=>VariableListPreview
|
|
26
|
+
});
|
|
27
|
+
const _jsxRuntime = require("react/jsx-runtime");
|
|
28
|
+
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
29
|
+
const _material = require("@mui/material");
|
|
30
|
+
const _components = require("@perses-dev/components");
|
|
31
|
+
const _refresh = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/Refresh"));
|
|
32
|
+
const _clipboardOutline = /*#__PURE__*/ _interopRequireDefault(require("mdi-material-ui/ClipboardOutline"));
|
|
33
|
+
const _constants = require("../../../constants");
|
|
34
|
+
const _variableModel = require("../variable-model");
|
|
35
|
+
function _interopRequireDefault(obj) {
|
|
36
|
+
return obj && obj.__esModule ? obj : {
|
|
37
|
+
default: obj
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
41
|
+
if (typeof WeakMap !== "function") return null;
|
|
42
|
+
var cacheBabelInterop = new WeakMap();
|
|
43
|
+
var cacheNodeInterop = new WeakMap();
|
|
44
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
45
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
46
|
+
})(nodeInterop);
|
|
47
|
+
}
|
|
48
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
49
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
50
|
+
return obj;
|
|
51
|
+
}
|
|
52
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
53
|
+
return {
|
|
54
|
+
default: obj
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
58
|
+
if (cache && cache.has(obj)) {
|
|
59
|
+
return cache.get(obj);
|
|
60
|
+
}
|
|
61
|
+
var newObj = {};
|
|
62
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
63
|
+
for(var key in obj){
|
|
64
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
65
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
66
|
+
if (desc && (desc.get || desc.set)) {
|
|
67
|
+
Object.defineProperty(newObj, key, desc);
|
|
68
|
+
} else {
|
|
69
|
+
newObj[key] = obj[key];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
newObj.default = obj;
|
|
74
|
+
if (cache) {
|
|
75
|
+
cache.set(obj, newObj);
|
|
76
|
+
}
|
|
77
|
+
return newObj;
|
|
78
|
+
}
|
|
79
|
+
const DEFAULT_MAX_PREVIEW_VALUES = 50;
|
|
80
|
+
function VariablePreview(props) {
|
|
81
|
+
const { values , onRefresh , isLoading , error } = props;
|
|
82
|
+
const [maxValues, setMaxValues] = (0, _react.useState)(DEFAULT_MAX_PREVIEW_VALUES);
|
|
83
|
+
const { infoSnackbar } = (0, _components.useSnackbar)();
|
|
84
|
+
const showAll = ()=>{
|
|
85
|
+
setMaxValues(undefined);
|
|
86
|
+
};
|
|
87
|
+
let notShown = 0;
|
|
88
|
+
if (values && (values === null || values === void 0 ? void 0 : values.length) > 0 && maxValues) {
|
|
89
|
+
notShown = values.length - maxValues;
|
|
90
|
+
}
|
|
91
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Box, {
|
|
92
|
+
children: [
|
|
93
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
|
|
94
|
+
direction: "row",
|
|
95
|
+
spacing: 1,
|
|
96
|
+
alignItems: "center",
|
|
97
|
+
mb: 1,
|
|
98
|
+
children: [
|
|
99
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Typography, {
|
|
100
|
+
variant: "h4",
|
|
101
|
+
children: "Preview Values"
|
|
102
|
+
}),
|
|
103
|
+
onRefresh && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.InfoTooltip, {
|
|
104
|
+
description: _constants.TOOLTIP_TEXT.refreshVariableValues,
|
|
105
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.IconButton, {
|
|
106
|
+
onClick: onRefresh,
|
|
107
|
+
size: "small",
|
|
108
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_refresh.default, {})
|
|
109
|
+
})
|
|
110
|
+
}),
|
|
111
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_components.InfoTooltip, {
|
|
112
|
+
description: _constants.TOOLTIP_TEXT.copyVariableValues,
|
|
113
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.IconButton, {
|
|
114
|
+
onClick: async ()=>{
|
|
115
|
+
if (values === null || values === void 0 ? void 0 : values.length) {
|
|
116
|
+
await navigator.clipboard.writeText(values.map((value)=>value).join(', '));
|
|
117
|
+
infoSnackbar('Preview values copied to clipboard!');
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
size: "small",
|
|
121
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_clipboardOutline.default, {})
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
]
|
|
125
|
+
}),
|
|
126
|
+
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Card, {
|
|
127
|
+
variant: "outlined",
|
|
128
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Box, {
|
|
129
|
+
sx: {
|
|
130
|
+
display: 'flex',
|
|
131
|
+
flexWrap: 'wrap',
|
|
132
|
+
gap: 1,
|
|
133
|
+
m: 2
|
|
134
|
+
},
|
|
135
|
+
children: [
|
|
136
|
+
error && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Alert, {
|
|
137
|
+
severity: "error",
|
|
138
|
+
children: error
|
|
139
|
+
}),
|
|
140
|
+
(values === null || values === void 0 ? void 0 : values.length) === 0 && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Alert, {
|
|
141
|
+
severity: "info",
|
|
142
|
+
children: "No results"
|
|
143
|
+
}),
|
|
144
|
+
isLoading && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Stack, {
|
|
145
|
+
width: "100%",
|
|
146
|
+
sx: {
|
|
147
|
+
alignItems: 'center',
|
|
148
|
+
justifyContent: 'center'
|
|
149
|
+
},
|
|
150
|
+
children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.CircularProgress, {})
|
|
151
|
+
}),
|
|
152
|
+
values === null || values === void 0 ? void 0 : values.slice(0, maxValues).map((val)=>/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Chip, {
|
|
153
|
+
size: "small",
|
|
154
|
+
label: val
|
|
155
|
+
}, val)),
|
|
156
|
+
notShown > 0 && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.Chip, {
|
|
157
|
+
onClick: showAll,
|
|
158
|
+
variant: "outlined",
|
|
159
|
+
size: "small",
|
|
160
|
+
label: `+${notShown} more`
|
|
161
|
+
})
|
|
162
|
+
]
|
|
163
|
+
})
|
|
164
|
+
})
|
|
165
|
+
]
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function VariableListPreview(props) {
|
|
169
|
+
const { definition , onRefresh } = props;
|
|
170
|
+
const { data , isFetching , error } = (0, _variableModel.useListVariablePluginValues)(definition);
|
|
171
|
+
const errorMessage = error === null || error === void 0 ? void 0 : error.message;
|
|
172
|
+
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(VariablePreview, {
|
|
173
|
+
values: (data === null || data === void 0 ? void 0 : data.map((val)=>val.value)) || [],
|
|
174
|
+
onRefresh: onRefresh,
|
|
175
|
+
isLoading: isFetching,
|
|
176
|
+
error: errorMessage
|
|
177
|
+
});
|
|
178
|
+
}
|
|
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
15
15
|
value: true
|
|
16
16
|
});
|
|
17
17
|
_exportStar(require("./VariableEditorForm"), exports);
|
|
18
|
+
_exportStar(require("./VariablePreview"), exports);
|
|
18
19
|
function _exportStar(from, to) {
|
|
19
20
|
Object.keys(from).forEach(function(k) {
|
|
20
21
|
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) Object.defineProperty(to, k, {
|
|
@@ -58,17 +58,15 @@ function getInitialState(initialVariableDefinition) {
|
|
|
58
58
|
}
|
|
59
59
|
function getVariableDefinitionFromState(state) {
|
|
60
60
|
const { name , title , kind } = state;
|
|
61
|
-
const
|
|
62
|
-
name
|
|
63
|
-
|
|
64
|
-
name: title
|
|
65
|
-
}
|
|
66
|
-
};
|
|
61
|
+
const display = title ? {
|
|
62
|
+
name: title
|
|
63
|
+
} : undefined;
|
|
67
64
|
if (kind === 'TextVariable') {
|
|
68
65
|
return {
|
|
69
66
|
kind,
|
|
70
67
|
spec: {
|
|
71
|
-
|
|
68
|
+
name,
|
|
69
|
+
display,
|
|
72
70
|
...state.textVariableFields
|
|
73
71
|
}
|
|
74
72
|
};
|
|
@@ -77,7 +75,8 @@ function getVariableDefinitionFromState(state) {
|
|
|
77
75
|
return {
|
|
78
76
|
kind,
|
|
79
77
|
spec: {
|
|
80
|
-
|
|
78
|
+
name,
|
|
79
|
+
display,
|
|
81
80
|
allow_multiple: state.listVariableFields.allowMultiple,
|
|
82
81
|
allow_all_value: state.listVariableFields.allowAll,
|
|
83
82
|
capturing_regexp: state.listVariableFields.capturing_regexp,
|