@perses-dev/plugin-system 0.50.3 → 0.51.0-beta.1
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/DatasourceEditorForm/DatasourceEditorForm.js +17 -71
- package/dist/cjs/components/DatasourceSelect.js +8 -13
- package/dist/cjs/components/HTTPSettingsEditor/HTTPSettingsEditor.js +534 -0
- package/dist/cjs/{stories/shared-utils → components/HTTPSettingsEditor}/index.js +2 -2
- package/dist/cjs/components/LegendOptionsEditor/LegendOptionsEditor.js +4 -4
- package/dist/cjs/components/MetricLabelInput/MetricLabelInput.js +1 -1
- package/dist/cjs/components/MetricLabelInput/index.js +1 -1
- package/dist/cjs/components/MultiQueryEditor/MultiQueryEditor.js +15 -14
- package/dist/cjs/components/MultiQueryEditor/QueryEditorContainer.js +2 -2
- package/dist/cjs/components/PanelSpecEditor/PanelSpecEditor.js +7 -11
- package/dist/cjs/components/PluginEditor/PluginEditor.js +10 -6
- package/dist/cjs/components/PluginEditor/plugin-editor-api.js +4 -5
- package/dist/cjs/components/PluginKindSelect/PluginKindSelect.js +7 -8
- package/dist/cjs/components/PluginRegistry/PluginRegistry.js +7 -10
- package/dist/cjs/components/PluginRegistry/plugin-indexes.js +17 -14
- package/dist/cjs/components/ProjectSelect.js +2 -3
- package/dist/cjs/components/Variables/VariableEditorForm/VariableEditorForm.js +46 -92
- package/dist/cjs/components/Variables/VariableEditorForm/VariablePreview.js +6 -6
- package/dist/cjs/components/Variables/VariableEditorForm/variable-editor-form-model.js +6 -11
- package/dist/cjs/components/Variables/variable-model.js +4 -7
- package/dist/cjs/components/index.js +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/{stories/shared-utils/index.js → cjs/model/explore.js} +4 -3
- package/dist/cjs/remote/PersesPlugin.types.js +16 -0
- package/dist/cjs/remote/PluginLoaderComponent.js +75 -0
- package/dist/cjs/remote/PluginRuntime.js +267 -0
- package/dist/cjs/{stories/shared-utils/decorators → remote}/index.js +3 -7
- package/dist/cjs/remote/remotePluginLoader.js +61 -0
- package/dist/cjs/runtime/DataQueriesProvider/DataQueriesProvider.js +4 -10
- package/dist/cjs/runtime/DataQueriesProvider/model.js +4 -7
- package/dist/cjs/runtime/TimeRangeProvider/TimeRangeProvider.js +2 -2
- package/dist/cjs/runtime/builtin-variables.js +1 -1
- package/dist/cjs/runtime/datasources.js +3 -3
- package/dist/cjs/runtime/plugin-registry.js +5 -6
- package/dist/cjs/runtime/time-series-queries.js +11 -18
- package/dist/cjs/runtime/trace-queries.js +1 -2
- package/dist/cjs/runtime/variables.js +10 -28
- package/dist/cjs/test/render.js +1 -2
- package/dist/cjs/test-utils/mock-plugin-registry.js +10 -10
- package/dist/cjs/utils/variables.js +1 -1
- package/dist/components/DatasourceEditorForm/DatasourceEditorForm.d.ts.map +1 -1
- package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js +17 -30
- package/dist/components/DatasourceEditorForm/DatasourceEditorForm.js.map +1 -1
- package/dist/components/DatasourceSelect.d.ts +2 -2
- package/dist/components/DatasourceSelect.d.ts.map +1 -1
- package/dist/components/DatasourceSelect.js +8 -13
- package/dist/components/DatasourceSelect.js.map +1 -1
- package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.d.ts +11 -0
- package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.d.ts.map +1 -0
- package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.js +480 -0
- package/dist/components/HTTPSettingsEditor/HTTPSettingsEditor.js.map +1 -0
- package/dist/components/HTTPSettingsEditor/index.d.ts +2 -0
- package/dist/components/HTTPSettingsEditor/index.d.ts.map +1 -0
- package/dist/{stories/shared-utils/decorators → components/HTTPSettingsEditor}/index.js +1 -6
- package/dist/components/HTTPSettingsEditor/index.js.map +1 -0
- package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js +4 -4
- package/dist/components/LegendOptionsEditor/LegendOptionsEditor.js.map +1 -1
- package/dist/components/MetricLabelInput/MetricLabelInput.js +1 -1
- package/dist/components/MetricLabelInput/MetricLabelInput.js.map +1 -1
- package/dist/components/MetricLabelInput/index.js +1 -1
- package/dist/components/MetricLabelInput/index.js.map +1 -1
- package/dist/components/MultiQueryEditor/MultiQueryEditor.d.ts.map +1 -1
- package/dist/components/MultiQueryEditor/MultiQueryEditor.js +15 -14
- package/dist/components/MultiQueryEditor/MultiQueryEditor.js.map +1 -1
- package/dist/components/MultiQueryEditor/QueryEditorContainer.js +1 -1
- package/dist/components/MultiQueryEditor/QueryEditorContainer.js.map +1 -1
- package/dist/components/OptionsEditorTabPanel/OptionsEditorTabPanel.js.map +1 -1
- package/dist/components/OptionsEditorTabs/OptionsEditorTabs.js.map +1 -1
- package/dist/components/PanelSpecEditor/PanelSpecEditor.js +7 -11
- package/dist/components/PanelSpecEditor/PanelSpecEditor.js.map +1 -1
- package/dist/components/PluginEditor/PluginEditor.d.ts.map +1 -1
- package/dist/components/PluginEditor/PluginEditor.js +10 -6
- package/dist/components/PluginEditor/PluginEditor.js.map +1 -1
- package/dist/components/PluginEditor/plugin-editor-api.js +4 -5
- package/dist/components/PluginEditor/plugin-editor-api.js.map +1 -1
- package/dist/components/PluginKindSelect/PluginKindSelect.js +7 -8
- package/dist/components/PluginKindSelect/PluginKindSelect.js.map +1 -1
- package/dist/components/PluginRegistry/PluginRegistry.js +7 -10
- package/dist/components/PluginRegistry/PluginRegistry.js.map +1 -1
- package/dist/components/PluginRegistry/plugin-indexes.d.ts +4 -4
- package/dist/components/PluginRegistry/plugin-indexes.d.ts.map +1 -1
- package/dist/components/PluginRegistry/plugin-indexes.js +17 -14
- package/dist/components/PluginRegistry/plugin-indexes.js.map +1 -1
- package/dist/components/ProjectSelect.js +2 -3
- package/dist/components/ProjectSelect.js.map +1 -1
- package/dist/components/TimeRangeControls/TimeRangeControls.js.map +1 -1
- package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js +46 -92
- package/dist/components/Variables/VariableEditorForm/VariableEditorForm.js.map +1 -1
- package/dist/components/Variables/VariableEditorForm/VariablePreview.js +6 -6
- package/dist/components/Variables/VariableEditorForm/VariablePreview.js.map +1 -1
- package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js +6 -11
- package/dist/components/Variables/VariableEditorForm/variable-editor-form-model.js.map +1 -1
- package/dist/components/Variables/variable-model.js +4 -7
- package/dist/components/Variables/variable-model.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/model/explore.d.ts +13 -0
- package/dist/model/explore.d.ts.map +1 -0
- package/dist/model/explore.js +17 -0
- package/dist/model/explore.js.map +1 -0
- package/dist/model/panels.d.ts +13 -3
- package/dist/model/panels.d.ts.map +1 -1
- package/dist/model/panels.js.map +1 -1
- package/dist/model/plugins.d.ts +31 -17
- package/dist/model/plugins.d.ts.map +1 -1
- package/dist/model/plugins.js.map +1 -1
- package/dist/remote/PersesPlugin.types.d.ts +7 -0
- package/dist/remote/PersesPlugin.types.d.ts.map +1 -0
- package/dist/remote/PersesPlugin.types.js +15 -0
- package/dist/remote/PersesPlugin.types.js.map +1 -0
- package/dist/remote/PluginLoaderComponent.d.ts +10 -0
- package/dist/remote/PluginLoaderComponent.d.ts.map +1 -0
- package/dist/remote/PluginLoaderComponent.js +67 -0
- package/dist/remote/PluginLoaderComponent.js.map +1 -0
- package/dist/remote/PluginRuntime.d.ts +11 -0
- package/dist/remote/PluginRuntime.d.ts.map +1 -0
- package/dist/remote/PluginRuntime.js +202 -0
- package/dist/remote/PluginRuntime.js.map +1 -0
- package/dist/remote/index.d.ts +3 -0
- package/dist/remote/index.d.ts.map +1 -0
- package/dist/remote/index.js +16 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/remote/remotePluginLoader.d.ts +3 -0
- package/dist/remote/remotePluginLoader.d.ts.map +1 -0
- package/dist/remote/remotePluginLoader.js +53 -0
- package/dist/remote/remotePluginLoader.js.map +1 -0
- package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js +4 -10
- package/dist/runtime/DataQueriesProvider/DataQueriesProvider.js.map +1 -1
- package/dist/runtime/DataQueriesProvider/model.d.ts.map +1 -1
- package/dist/runtime/DataQueriesProvider/model.js +4 -7
- package/dist/runtime/DataQueriesProvider/model.js.map +1 -1
- package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js +2 -2
- package/dist/runtime/TimeRangeProvider/TimeRangeProvider.js.map +1 -1
- package/dist/runtime/builtin-variables.js +1 -1
- package/dist/runtime/builtin-variables.js.map +1 -1
- package/dist/runtime/datasources.d.ts +2 -2
- package/dist/runtime/datasources.js +3 -3
- package/dist/runtime/datasources.js.map +1 -1
- package/dist/runtime/plugin-registry.d.ts +6 -6
- package/dist/runtime/plugin-registry.d.ts.map +1 -1
- package/dist/runtime/plugin-registry.js +5 -6
- package/dist/runtime/plugin-registry.js.map +1 -1
- package/dist/runtime/time-series-queries.js +11 -18
- package/dist/runtime/time-series-queries.js.map +1 -1
- package/dist/runtime/trace-queries.js +1 -2
- package/dist/runtime/trace-queries.js.map +1 -1
- package/dist/runtime/variables.js +10 -28
- package/dist/runtime/variables.js.map +1 -1
- package/dist/test/render.js +1 -2
- package/dist/test/render.js.map +1 -1
- package/dist/test-utils/mock-plugin-registry.d.ts +5 -3
- package/dist/test-utils/mock-plugin-registry.d.ts.map +1 -1
- package/dist/test-utils/mock-plugin-registry.js +10 -10
- package/dist/test-utils/mock-plugin-registry.js.map +1 -1
- package/dist/utils/variables.js +1 -1
- package/dist/utils/variables.js.map +1 -1
- package/package.json +9 -10
- package/dist/cjs/stories/shared-utils/decorators/WithDataQueries.js +0 -41
- package/dist/cjs/stories/shared-utils/decorators/WithPluginRegistry.js +0 -100
- package/dist/cjs/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.js +0 -42
- package/dist/cjs/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.js +0 -101
- package/dist/cjs/stories/shared-utils/decorators/WithPluginSystemVariables.js +0 -42
- package/dist/cjs/stories/shared-utils/decorators/WithTimeRange.js +0 -41
- package/dist/stories/shared-utils/decorators/WithDataQueries.d.ts +0 -13
- package/dist/stories/shared-utils/decorators/WithDataQueries.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/WithDataQueries.js +0 -33
- package/dist/stories/shared-utils/decorators/WithDataQueries.js.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginRegistry.d.ts +0 -4
- package/dist/stories/shared-utils/decorators/WithPluginRegistry.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginRegistry.js +0 -46
- package/dist/stories/shared-utils/decorators/WithPluginRegistry.js.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.d.ts +0 -13
- package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.js +0 -39
- package/dist/stories/shared-utils/decorators/WithPluginSystemBuiltinVariables.js.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.d.ts +0 -13
- package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.js +0 -95
- package/dist/stories/shared-utils/decorators/WithPluginSystemDatasourceStore.js.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginSystemVariables.d.ts +0 -13
- package/dist/stories/shared-utils/decorators/WithPluginSystemVariables.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/WithPluginSystemVariables.js +0 -39
- package/dist/stories/shared-utils/decorators/WithPluginSystemVariables.js.map +0 -1
- package/dist/stories/shared-utils/decorators/WithTimeRange.d.ts +0 -13
- package/dist/stories/shared-utils/decorators/WithTimeRange.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/WithTimeRange.js +0 -33
- package/dist/stories/shared-utils/decorators/WithTimeRange.js.map +0 -1
- package/dist/stories/shared-utils/decorators/index.d.ts +0 -7
- package/dist/stories/shared-utils/decorators/index.d.ts.map +0 -1
- package/dist/stories/shared-utils/decorators/index.js.map +0 -1
- package/dist/stories/shared-utils/index.d.ts +0 -2
- package/dist/stories/shared-utils/index.d.ts.map +0 -1
- package/dist/stories/shared-utils/index.js.map +0 -1
|
@@ -0,0 +1,480 @@
|
|
|
1
|
+
// Copyright 2024 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 { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
14
|
+
import { Grid, IconButton, MenuItem, TextField, Typography } from '@mui/material';
|
|
15
|
+
import React, { Fragment, useState } from 'react';
|
|
16
|
+
import { produce } from 'immer';
|
|
17
|
+
import { Controller } from 'react-hook-form';
|
|
18
|
+
import MinusIcon from 'mdi-material-ui/Minus';
|
|
19
|
+
import PlusIcon from 'mdi-material-ui/Plus';
|
|
20
|
+
import { OptionsEditorRadios } from '../OptionsEditorRadios';
|
|
21
|
+
export function HTTPSettingsEditor(props) {
|
|
22
|
+
const { value, onChange, isReadonly, initialSpecDirect, initialSpecProxy } = props;
|
|
23
|
+
const strDirect = 'Direct access';
|
|
24
|
+
const strProxy = 'Proxy';
|
|
25
|
+
// utilitary function used for headers when renaming a property
|
|
26
|
+
// -> TODO it would be cleaner to manipulate headers as an intermediary list instead, to avoid doing this.
|
|
27
|
+
const buildNewHeaders = (oldHeaders, oldName, newName)=>{
|
|
28
|
+
if (oldHeaders === undefined) return oldHeaders;
|
|
29
|
+
const keys = Object.keys(oldHeaders);
|
|
30
|
+
const newHeaders = keys.reduce((acc, val)=>{
|
|
31
|
+
if (val === oldName) {
|
|
32
|
+
acc[newName] = oldHeaders[oldName] || '';
|
|
33
|
+
} else {
|
|
34
|
+
acc[val] = oldHeaders[val] || '';
|
|
35
|
+
}
|
|
36
|
+
return acc;
|
|
37
|
+
}, {});
|
|
38
|
+
return {
|
|
39
|
+
...newHeaders
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
const tabs = [
|
|
43
|
+
{
|
|
44
|
+
label: strDirect,
|
|
45
|
+
content: /*#__PURE__*/ _jsx(Controller, {
|
|
46
|
+
name: "URL",
|
|
47
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsx(TextField, {
|
|
48
|
+
...field,
|
|
49
|
+
fullWidth: true,
|
|
50
|
+
label: "URL",
|
|
51
|
+
value: value.directUrl || '',
|
|
52
|
+
error: !!fieldState.error,
|
|
53
|
+
helperText: fieldState.error?.message,
|
|
54
|
+
InputProps: {
|
|
55
|
+
readOnly: isReadonly
|
|
56
|
+
},
|
|
57
|
+
InputLabelProps: {
|
|
58
|
+
shrink: isReadonly ? true : undefined
|
|
59
|
+
},
|
|
60
|
+
onChange: (e)=>{
|
|
61
|
+
field.onChange(e);
|
|
62
|
+
onChange(produce(value, (draft)=>{
|
|
63
|
+
draft.directUrl = e.target.value;
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
label: strProxy,
|
|
71
|
+
content: /*#__PURE__*/ _jsxs(_Fragment, {
|
|
72
|
+
children: [
|
|
73
|
+
/*#__PURE__*/ _jsx(Controller, {
|
|
74
|
+
name: "URL",
|
|
75
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsx(TextField, {
|
|
76
|
+
...field,
|
|
77
|
+
fullWidth: true,
|
|
78
|
+
label: "URL",
|
|
79
|
+
value: value.proxy?.spec.url || '',
|
|
80
|
+
error: !!fieldState.error,
|
|
81
|
+
helperText: fieldState.error?.message,
|
|
82
|
+
InputProps: {
|
|
83
|
+
readOnly: isReadonly
|
|
84
|
+
},
|
|
85
|
+
InputLabelProps: {
|
|
86
|
+
shrink: isReadonly ? true : undefined
|
|
87
|
+
},
|
|
88
|
+
onChange: (e)=>{
|
|
89
|
+
field.onChange(e);
|
|
90
|
+
onChange(produce(value, (draft)=>{
|
|
91
|
+
if (draft.proxy !== undefined) {
|
|
92
|
+
draft.proxy.spec.url = e.target.value;
|
|
93
|
+
}
|
|
94
|
+
}));
|
|
95
|
+
},
|
|
96
|
+
sx: {
|
|
97
|
+
mb: 2
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
}),
|
|
101
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
102
|
+
variant: "h4",
|
|
103
|
+
mb: 2,
|
|
104
|
+
children: "Allowed endpoints"
|
|
105
|
+
}),
|
|
106
|
+
/*#__PURE__*/ _jsxs(Grid, {
|
|
107
|
+
container: true,
|
|
108
|
+
spacing: 2,
|
|
109
|
+
mb: 2,
|
|
110
|
+
children: [
|
|
111
|
+
value.proxy?.spec.allowedEndpoints && value.proxy?.spec.allowedEndpoints.length !== 0 ? value.proxy.spec.allowedEndpoints.map(({ endpointPattern, method }, i)=>{
|
|
112
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
|
113
|
+
children: [
|
|
114
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
115
|
+
item: true,
|
|
116
|
+
xs: 8,
|
|
117
|
+
children: /*#__PURE__*/ _jsx(Controller, {
|
|
118
|
+
name: `Endpoint pattern ${i}`,
|
|
119
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsx(TextField, {
|
|
120
|
+
...field,
|
|
121
|
+
fullWidth: true,
|
|
122
|
+
label: "Endpoint pattern",
|
|
123
|
+
value: endpointPattern,
|
|
124
|
+
error: !!fieldState.error,
|
|
125
|
+
helperText: fieldState.error?.message,
|
|
126
|
+
InputProps: {
|
|
127
|
+
readOnly: isReadonly
|
|
128
|
+
},
|
|
129
|
+
InputLabelProps: {
|
|
130
|
+
shrink: isReadonly ? true : undefined
|
|
131
|
+
},
|
|
132
|
+
onChange: (e)=>{
|
|
133
|
+
field.onChange(e);
|
|
134
|
+
onChange(produce(value, (draft)=>{
|
|
135
|
+
if (draft.proxy !== undefined) {
|
|
136
|
+
draft.proxy.spec.allowedEndpoints = draft.proxy.spec.allowedEndpoints?.map((item, itemIndex)=>{
|
|
137
|
+
if (i === itemIndex) {
|
|
138
|
+
return {
|
|
139
|
+
endpointPattern: e.target.value,
|
|
140
|
+
method: item.method
|
|
141
|
+
};
|
|
142
|
+
} else {
|
|
143
|
+
return item;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
})
|
|
150
|
+
})
|
|
151
|
+
}),
|
|
152
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
153
|
+
item: true,
|
|
154
|
+
xs: 3,
|
|
155
|
+
children: /*#__PURE__*/ _jsx(Controller, {
|
|
156
|
+
name: `Method ${i}`,
|
|
157
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsxs(TextField, {
|
|
158
|
+
...field,
|
|
159
|
+
select: true,
|
|
160
|
+
fullWidth: true,
|
|
161
|
+
label: "Method",
|
|
162
|
+
value: method,
|
|
163
|
+
error: !!fieldState.error,
|
|
164
|
+
helperText: fieldState.error?.message,
|
|
165
|
+
InputProps: {
|
|
166
|
+
readOnly: isReadonly
|
|
167
|
+
},
|
|
168
|
+
InputLabelProps: {
|
|
169
|
+
shrink: isReadonly ? true : undefined
|
|
170
|
+
},
|
|
171
|
+
onChange: (e)=>{
|
|
172
|
+
field.onChange(e);
|
|
173
|
+
onChange(produce(value, (draft)=>{
|
|
174
|
+
if (draft.proxy !== undefined) {
|
|
175
|
+
draft.proxy.spec.allowedEndpoints = draft.proxy.spec.allowedEndpoints?.map((item, itemIndex)=>{
|
|
176
|
+
if (i === itemIndex) {
|
|
177
|
+
return {
|
|
178
|
+
endpointPattern: item.endpointPattern,
|
|
179
|
+
method: e.target.value
|
|
180
|
+
};
|
|
181
|
+
} else {
|
|
182
|
+
return item;
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}));
|
|
187
|
+
},
|
|
188
|
+
children: [
|
|
189
|
+
/*#__PURE__*/ _jsx(MenuItem, {
|
|
190
|
+
value: "GET",
|
|
191
|
+
children: "GET"
|
|
192
|
+
}),
|
|
193
|
+
/*#__PURE__*/ _jsx(MenuItem, {
|
|
194
|
+
value: "POST",
|
|
195
|
+
children: "POST"
|
|
196
|
+
}),
|
|
197
|
+
/*#__PURE__*/ _jsx(MenuItem, {
|
|
198
|
+
value: "PUT",
|
|
199
|
+
children: "PUT"
|
|
200
|
+
}),
|
|
201
|
+
/*#__PURE__*/ _jsx(MenuItem, {
|
|
202
|
+
value: "PATCH",
|
|
203
|
+
children: "PATCH"
|
|
204
|
+
}),
|
|
205
|
+
/*#__PURE__*/ _jsx(MenuItem, {
|
|
206
|
+
value: "DELETE",
|
|
207
|
+
children: "DELETE"
|
|
208
|
+
})
|
|
209
|
+
]
|
|
210
|
+
})
|
|
211
|
+
})
|
|
212
|
+
}),
|
|
213
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
214
|
+
item: true,
|
|
215
|
+
xs: 1,
|
|
216
|
+
children: /*#__PURE__*/ _jsx(Controller, {
|
|
217
|
+
name: `Remove Endpoint ${i}`,
|
|
218
|
+
render: ({ field })=>/*#__PURE__*/ _jsx(IconButton, {
|
|
219
|
+
...field,
|
|
220
|
+
disabled: isReadonly,
|
|
221
|
+
// Remove the given allowed endpoint from the list
|
|
222
|
+
onClick: (e)=>{
|
|
223
|
+
field.onChange(e);
|
|
224
|
+
onChange(produce(value, (draft)=>{
|
|
225
|
+
if (draft.proxy !== undefined) {
|
|
226
|
+
draft.proxy.spec.allowedEndpoints = [
|
|
227
|
+
...draft.proxy.spec.allowedEndpoints?.filter((item, itemIndex)=>{
|
|
228
|
+
return itemIndex !== i;
|
|
229
|
+
}) || []
|
|
230
|
+
];
|
|
231
|
+
}
|
|
232
|
+
}));
|
|
233
|
+
},
|
|
234
|
+
children: /*#__PURE__*/ _jsx(MinusIcon, {})
|
|
235
|
+
})
|
|
236
|
+
})
|
|
237
|
+
})
|
|
238
|
+
]
|
|
239
|
+
}, i);
|
|
240
|
+
}) : /*#__PURE__*/ _jsx(Grid, {
|
|
241
|
+
item: true,
|
|
242
|
+
xs: 4,
|
|
243
|
+
children: /*#__PURE__*/ _jsx(Typography, {
|
|
244
|
+
sx: {
|
|
245
|
+
fontStyle: 'italic'
|
|
246
|
+
},
|
|
247
|
+
children: "None"
|
|
248
|
+
})
|
|
249
|
+
}),
|
|
250
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
251
|
+
item: true,
|
|
252
|
+
xs: 12,
|
|
253
|
+
sx: {
|
|
254
|
+
paddingTop: '0px !important',
|
|
255
|
+
paddingLeft: '5px !important'
|
|
256
|
+
},
|
|
257
|
+
children: /*#__PURE__*/ _jsx(IconButton, {
|
|
258
|
+
disabled: isReadonly,
|
|
259
|
+
// Add a new (empty) allowed endpoint to the list
|
|
260
|
+
onClick: ()=>onChange(produce(value, (draft)=>{
|
|
261
|
+
if (draft.proxy !== undefined) {
|
|
262
|
+
draft.proxy.spec.allowedEndpoints = [
|
|
263
|
+
...draft.proxy.spec.allowedEndpoints ?? [],
|
|
264
|
+
{
|
|
265
|
+
endpointPattern: '',
|
|
266
|
+
method: ''
|
|
267
|
+
}
|
|
268
|
+
];
|
|
269
|
+
}
|
|
270
|
+
})),
|
|
271
|
+
children: /*#__PURE__*/ _jsx(PlusIcon, {})
|
|
272
|
+
})
|
|
273
|
+
})
|
|
274
|
+
]
|
|
275
|
+
}),
|
|
276
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
277
|
+
variant: "h4",
|
|
278
|
+
mb: 2,
|
|
279
|
+
children: "Request Headers"
|
|
280
|
+
}),
|
|
281
|
+
/*#__PURE__*/ _jsxs(Grid, {
|
|
282
|
+
container: true,
|
|
283
|
+
spacing: 2,
|
|
284
|
+
mb: 2,
|
|
285
|
+
children: [
|
|
286
|
+
value.proxy?.spec.headers && Object.keys(value.proxy.spec.headers).map((headerName, i)=>{
|
|
287
|
+
return /*#__PURE__*/ _jsxs(Fragment, {
|
|
288
|
+
children: [
|
|
289
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
290
|
+
item: true,
|
|
291
|
+
xs: 4,
|
|
292
|
+
children: /*#__PURE__*/ _jsx(Controller, {
|
|
293
|
+
name: `Header name ${i}`,
|
|
294
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsx(TextField, {
|
|
295
|
+
...field,
|
|
296
|
+
fullWidth: true,
|
|
297
|
+
label: "Header name",
|
|
298
|
+
value: headerName,
|
|
299
|
+
error: !!fieldState.error,
|
|
300
|
+
helperText: fieldState.error?.message,
|
|
301
|
+
InputProps: {
|
|
302
|
+
readOnly: isReadonly
|
|
303
|
+
},
|
|
304
|
+
InputLabelProps: {
|
|
305
|
+
shrink: isReadonly ? true : undefined
|
|
306
|
+
},
|
|
307
|
+
onChange: (e)=>{
|
|
308
|
+
field.onChange(e);
|
|
309
|
+
onChange(produce(value, (draft)=>{
|
|
310
|
+
if (draft.proxy !== undefined) {
|
|
311
|
+
draft.proxy.spec.headers = buildNewHeaders(draft.proxy.spec.headers, headerName, e.target.value);
|
|
312
|
+
}
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
})
|
|
316
|
+
})
|
|
317
|
+
}),
|
|
318
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
319
|
+
item: true,
|
|
320
|
+
xs: 7,
|
|
321
|
+
children: /*#__PURE__*/ _jsx(Controller, {
|
|
322
|
+
name: `Header value ${i}`,
|
|
323
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsx(TextField, {
|
|
324
|
+
...field,
|
|
325
|
+
fullWidth: true,
|
|
326
|
+
label: "Header value",
|
|
327
|
+
value: value.proxy?.spec.headers?.[headerName],
|
|
328
|
+
error: !!fieldState.error,
|
|
329
|
+
helperText: fieldState.error?.message,
|
|
330
|
+
InputProps: {
|
|
331
|
+
readOnly: isReadonly
|
|
332
|
+
},
|
|
333
|
+
InputLabelProps: {
|
|
334
|
+
shrink: isReadonly ? true : undefined
|
|
335
|
+
},
|
|
336
|
+
onChange: (e)=>{
|
|
337
|
+
field.onChange(e);
|
|
338
|
+
onChange(produce(value, (draft)=>{
|
|
339
|
+
if (draft.proxy !== undefined) {
|
|
340
|
+
draft.proxy.spec.headers = {
|
|
341
|
+
...draft.proxy.spec.headers,
|
|
342
|
+
[headerName]: e.target.value
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
}));
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
})
|
|
349
|
+
}),
|
|
350
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
351
|
+
item: true,
|
|
352
|
+
xs: 1,
|
|
353
|
+
children: /*#__PURE__*/ _jsx(Controller, {
|
|
354
|
+
name: `Remove Header ${i}`,
|
|
355
|
+
render: ({ field })=>/*#__PURE__*/ _jsx(IconButton, {
|
|
356
|
+
...field,
|
|
357
|
+
disabled: isReadonly,
|
|
358
|
+
// Remove the given header from the list
|
|
359
|
+
onClick: (e)=>{
|
|
360
|
+
field.onChange(e);
|
|
361
|
+
const newHeaders = {
|
|
362
|
+
...value.proxy?.spec.headers
|
|
363
|
+
};
|
|
364
|
+
delete newHeaders[headerName];
|
|
365
|
+
onChange(produce(value, (draft)=>{
|
|
366
|
+
if (draft.proxy !== undefined) {
|
|
367
|
+
draft.proxy.spec.headers = newHeaders;
|
|
368
|
+
}
|
|
369
|
+
}));
|
|
370
|
+
},
|
|
371
|
+
children: /*#__PURE__*/ _jsx(MinusIcon, {})
|
|
372
|
+
})
|
|
373
|
+
})
|
|
374
|
+
})
|
|
375
|
+
]
|
|
376
|
+
}, i);
|
|
377
|
+
}),
|
|
378
|
+
/*#__PURE__*/ _jsx(Grid, {
|
|
379
|
+
item: true,
|
|
380
|
+
xs: 12,
|
|
381
|
+
sx: {
|
|
382
|
+
paddingTop: '0px !important',
|
|
383
|
+
paddingLeft: '5px !important'
|
|
384
|
+
},
|
|
385
|
+
children: /*#__PURE__*/ _jsx(IconButton, {
|
|
386
|
+
disabled: isReadonly,
|
|
387
|
+
// Add a new (empty) header to the list
|
|
388
|
+
onClick: ()=>onChange(produce(value, (draft)=>{
|
|
389
|
+
if (draft.proxy !== undefined) {
|
|
390
|
+
draft.proxy.spec.headers = {
|
|
391
|
+
...draft.proxy.spec.headers,
|
|
392
|
+
'': ''
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
})),
|
|
396
|
+
children: /*#__PURE__*/ _jsx(PlusIcon, {})
|
|
397
|
+
})
|
|
398
|
+
})
|
|
399
|
+
]
|
|
400
|
+
}),
|
|
401
|
+
/*#__PURE__*/ _jsx(Controller, {
|
|
402
|
+
name: "Secret",
|
|
403
|
+
render: ({ field, fieldState })=>/*#__PURE__*/ _jsx(TextField, {
|
|
404
|
+
...field,
|
|
405
|
+
fullWidth: true,
|
|
406
|
+
label: "Secret",
|
|
407
|
+
value: value.proxy?.spec.secret || '',
|
|
408
|
+
error: !!fieldState.error,
|
|
409
|
+
helperText: fieldState.error?.message,
|
|
410
|
+
InputProps: {
|
|
411
|
+
readOnly: isReadonly
|
|
412
|
+
},
|
|
413
|
+
InputLabelProps: {
|
|
414
|
+
shrink: isReadonly ? true : undefined
|
|
415
|
+
},
|
|
416
|
+
onChange: (e)=>{
|
|
417
|
+
field.onChange(e);
|
|
418
|
+
onChange(produce(value, (draft)=>{
|
|
419
|
+
if (draft.proxy !== undefined) {
|
|
420
|
+
draft.proxy.spec.secret = e.target.value;
|
|
421
|
+
}
|
|
422
|
+
}));
|
|
423
|
+
}
|
|
424
|
+
})
|
|
425
|
+
})
|
|
426
|
+
]
|
|
427
|
+
})
|
|
428
|
+
}
|
|
429
|
+
];
|
|
430
|
+
// Use of findIndex instead of providing hardcoded values to avoid desynchronisatio or
|
|
431
|
+
// bug in case the tabs get eventually swapped in the future.
|
|
432
|
+
const directModeId = tabs.findIndex((tab)=>tab.label === strDirect);
|
|
433
|
+
const proxyModeId = tabs.findIndex((tab)=>tab.label === strProxy);
|
|
434
|
+
// In "update datasource" case, set defaultTab to the mode that this datasource is currently relying on.
|
|
435
|
+
// Otherwise (create datasource), set defaultTab to Direct access.
|
|
436
|
+
const defaultTab = value.proxy ? proxyModeId : directModeId;
|
|
437
|
+
// For better user experience, save previous states in mind for both mode.
|
|
438
|
+
// This avoids losing everything when the user changes their mind back.
|
|
439
|
+
const [previousSpecDirect, setPreviousSpecDirect] = useState(initialSpecDirect);
|
|
440
|
+
const [previousSpecProxy, setPreviousSpecProxy] = useState(initialSpecProxy);
|
|
441
|
+
// When changing mode, remove previous mode's config + append default values for the new mode.
|
|
442
|
+
const handleModeChange = (v)=>{
|
|
443
|
+
if (tabs[v]?.label === strDirect) {
|
|
444
|
+
setPreviousSpecProxy(value);
|
|
445
|
+
// Copy all settings (for example, scrapeInterval), except 'proxy'
|
|
446
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
447
|
+
const { proxy, ...newValue } = value;
|
|
448
|
+
onChange({
|
|
449
|
+
...newValue,
|
|
450
|
+
directUrl: previousSpecDirect.directUrl
|
|
451
|
+
});
|
|
452
|
+
} else if (tabs[v]?.label === strProxy) {
|
|
453
|
+
setPreviousSpecDirect(value);
|
|
454
|
+
// Copy all settings (for example, scrapeInterval), except 'directUrl'
|
|
455
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
456
|
+
const { directUrl, ...newValue } = value;
|
|
457
|
+
onChange({
|
|
458
|
+
...newValue,
|
|
459
|
+
proxy: previousSpecProxy.proxy
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
return /*#__PURE__*/ _jsxs(_Fragment, {
|
|
464
|
+
children: [
|
|
465
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
466
|
+
variant: "h4",
|
|
467
|
+
mt: 2,
|
|
468
|
+
children: "HTTP Settings"
|
|
469
|
+
}),
|
|
470
|
+
/*#__PURE__*/ _jsx(OptionsEditorRadios, {
|
|
471
|
+
isReadonly: isReadonly,
|
|
472
|
+
tabs: tabs,
|
|
473
|
+
defaultTab: defaultTab,
|
|
474
|
+
onModeChange: handleModeChange
|
|
475
|
+
})
|
|
476
|
+
]
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
//# sourceMappingURL=HTTPSettingsEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/HTTPSettingsEditor/HTTPSettingsEditor.tsx"],"sourcesContent":["// Copyright 2024 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 { RequestHeaders, HTTPDatasourceSpec } from '@perses-dev/core';\nimport { Grid, IconButton, MenuItem, TextField, Typography } from '@mui/material';\nimport React, { Fragment, ReactElement, useState } from 'react';\nimport { produce } from 'immer';\nimport { Controller } from 'react-hook-form';\nimport MinusIcon from 'mdi-material-ui/Minus';\nimport PlusIcon from 'mdi-material-ui/Plus';\nimport { OptionsEditorRadios } from '../OptionsEditorRadios';\n\nexport interface HTTPSettingsEditor {\n value: HTTPDatasourceSpec;\n onChange: (next: HTTPDatasourceSpec) => void;\n isReadonly?: boolean;\n initialSpecDirect: HTTPDatasourceSpec;\n initialSpecProxy: HTTPDatasourceSpec;\n}\n\nexport function HTTPSettingsEditor(props: HTTPSettingsEditor): ReactElement {\n const { value, onChange, isReadonly, initialSpecDirect, initialSpecProxy } = props;\n const strDirect = 'Direct access';\n const strProxy = 'Proxy';\n\n // utilitary function used for headers when renaming a property\n // -> TODO it would be cleaner to manipulate headers as an intermediary list instead, to avoid doing this.\n const buildNewHeaders = (\n oldHeaders: RequestHeaders | undefined,\n oldName: string,\n newName: string\n ): RequestHeaders | undefined => {\n if (oldHeaders === undefined) return oldHeaders;\n const keys = Object.keys(oldHeaders);\n const newHeaders = keys.reduce<Record<string, string>>((acc, val) => {\n if (val === oldName) {\n acc[newName] = oldHeaders[oldName] || '';\n } else {\n acc[val] = oldHeaders[val] || '';\n }\n return acc;\n }, {});\n\n return { ...newHeaders };\n };\n\n const tabs = [\n {\n label: strDirect,\n content: (\n <Controller\n name=\"URL\"\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"URL\"\n value={value.directUrl || ''}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n draft.directUrl = e.target.value;\n })\n );\n }}\n />\n )}\n />\n ),\n },\n {\n label: strProxy,\n content: (\n <>\n <Controller\n name=\"URL\"\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"URL\"\n value={value.proxy?.spec.url || ''}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.url = e.target.value;\n }\n })\n );\n }}\n sx={{ mb: 2 }}\n />\n )}\n />\n <Typography variant=\"h4\" mb={2}>\n Allowed endpoints\n </Typography>\n <Grid container spacing={2} mb={2}>\n {value.proxy?.spec.allowedEndpoints && value.proxy?.spec.allowedEndpoints.length !== 0 ? (\n value.proxy.spec.allowedEndpoints.map(({ endpointPattern, method }, i) => {\n return (\n <Fragment key={i}>\n <Grid item xs={8}>\n <Controller\n name={`Endpoint pattern ${i}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"Endpoint pattern\"\n value={endpointPattern}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.allowedEndpoints = draft.proxy.spec.allowedEndpoints?.map(\n (item, itemIndex) => {\n if (i === itemIndex) {\n return {\n endpointPattern: e.target.value,\n method: item.method,\n };\n } else {\n return item;\n }\n }\n );\n }\n })\n );\n }}\n />\n )}\n />\n </Grid>\n <Grid item xs={3}>\n <Controller\n name={`Method ${i}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n select\n fullWidth\n label=\"Method\"\n value={method}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.allowedEndpoints = draft.proxy.spec.allowedEndpoints?.map(\n (item, itemIndex) => {\n if (i === itemIndex) {\n return {\n endpointPattern: item.endpointPattern,\n method: e.target.value,\n };\n } else {\n return item;\n }\n }\n );\n }\n })\n );\n }}\n >\n <MenuItem value=\"GET\">GET</MenuItem>\n <MenuItem value=\"POST\">POST</MenuItem>\n <MenuItem value=\"PUT\">PUT</MenuItem>\n <MenuItem value=\"PATCH\">PATCH</MenuItem>\n <MenuItem value=\"DELETE\">DELETE</MenuItem>\n </TextField>\n )}\n />\n </Grid>\n <Grid item xs={1}>\n <Controller\n name={`Remove Endpoint ${i}`}\n render={({ field }) => (\n <IconButton\n {...field}\n disabled={isReadonly}\n // Remove the given allowed endpoint from the list\n onClick={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.allowedEndpoints = [\n ...(draft.proxy.spec.allowedEndpoints?.filter((item, itemIndex) => {\n return itemIndex !== i;\n }) || []),\n ];\n }\n })\n );\n }}\n >\n <MinusIcon />\n </IconButton>\n )}\n />\n </Grid>\n </Fragment>\n );\n })\n ) : (\n <Grid item xs={4}>\n <Typography sx={{ fontStyle: 'italic' }}>None</Typography>\n </Grid>\n )}\n <Grid item xs={12} sx={{ paddingTop: '0px !important', paddingLeft: '5px !important' }}>\n <IconButton\n disabled={isReadonly}\n // Add a new (empty) allowed endpoint to the list\n onClick={() =>\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.allowedEndpoints = [\n ...(draft.proxy.spec.allowedEndpoints ?? []),\n { endpointPattern: '', method: '' },\n ];\n }\n })\n )\n }\n >\n <PlusIcon />\n </IconButton>\n </Grid>\n </Grid>\n <Typography variant=\"h4\" mb={2}>\n Request Headers\n </Typography>\n <Grid container spacing={2} mb={2}>\n {value.proxy?.spec.headers &&\n Object.keys(value.proxy.spec.headers).map((headerName, i) => {\n return (\n <Fragment key={i}>\n <Grid item xs={4}>\n <Controller\n name={`Header name ${i}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"Header name\"\n value={headerName}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.headers = buildNewHeaders(\n draft.proxy.spec.headers,\n headerName,\n e.target.value\n );\n }\n })\n );\n }}\n />\n )}\n />\n </Grid>\n <Grid item xs={7}>\n <Controller\n name={`Header value ${i}`}\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"Header value\"\n value={value.proxy?.spec.headers?.[headerName]}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.headers = {\n ...draft.proxy.spec.headers,\n [headerName]: e.target.value,\n };\n }\n })\n );\n }}\n />\n )}\n />\n </Grid>\n <Grid item xs={1}>\n <Controller\n name={`Remove Header ${i}`}\n render={({ field }) => (\n <IconButton\n {...field}\n disabled={isReadonly}\n // Remove the given header from the list\n onClick={(e) => {\n field.onChange(e);\n const newHeaders = { ...value.proxy?.spec.headers };\n delete newHeaders[headerName];\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.headers = newHeaders;\n }\n })\n );\n }}\n >\n <MinusIcon />\n </IconButton>\n )}\n />\n </Grid>\n </Fragment>\n );\n })}\n <Grid item xs={12} sx={{ paddingTop: '0px !important', paddingLeft: '5px !important' }}>\n <IconButton\n disabled={isReadonly}\n // Add a new (empty) header to the list\n onClick={() =>\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.headers = { ...draft.proxy.spec.headers, '': '' };\n }\n })\n )\n }\n >\n <PlusIcon />\n </IconButton>\n </Grid>\n </Grid>\n\n <Controller\n name=\"Secret\"\n render={({ field, fieldState }) => (\n <TextField\n {...field}\n fullWidth\n label=\"Secret\"\n value={value.proxy?.spec.secret || ''}\n error={!!fieldState.error}\n helperText={fieldState.error?.message}\n InputProps={{\n readOnly: isReadonly,\n }}\n InputLabelProps={{ shrink: isReadonly ? true : undefined }}\n onChange={(e) => {\n field.onChange(e);\n onChange(\n produce(value, (draft) => {\n if (draft.proxy !== undefined) {\n draft.proxy.spec.secret = e.target.value;\n }\n })\n );\n }}\n />\n )}\n />\n </>\n ),\n },\n ];\n\n // Use of findIndex instead of providing hardcoded values to avoid desynchronisatio or\n // bug in case the tabs get eventually swapped in the future.\n const directModeId = tabs.findIndex((tab) => tab.label === strDirect);\n const proxyModeId = tabs.findIndex((tab) => tab.label === strProxy);\n\n // In \"update datasource\" case, set defaultTab to the mode that this datasource is currently relying on.\n // Otherwise (create datasource), set defaultTab to Direct access.\n const defaultTab = value.proxy ? proxyModeId : directModeId;\n\n // For better user experience, save previous states in mind for both mode.\n // This avoids losing everything when the user changes their mind back.\n const [previousSpecDirect, setPreviousSpecDirect] = useState(initialSpecDirect);\n const [previousSpecProxy, setPreviousSpecProxy] = useState(initialSpecProxy);\n\n // When changing mode, remove previous mode's config + append default values for the new mode.\n const handleModeChange = (v: number): void => {\n if (tabs[v]?.label === strDirect) {\n setPreviousSpecProxy(value);\n\n // Copy all settings (for example, scrapeInterval), except 'proxy'\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { proxy, ...newValue } = value;\n onChange({ ...newValue, directUrl: previousSpecDirect.directUrl });\n } else if (tabs[v]?.label === strProxy) {\n setPreviousSpecDirect(value);\n\n // Copy all settings (for example, scrapeInterval), except 'directUrl'\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { directUrl, ...newValue } = value;\n onChange({ ...newValue, proxy: previousSpecProxy.proxy });\n }\n };\n\n return (\n <>\n <Typography variant=\"h4\" mt={2}>\n HTTP Settings\n </Typography>\n <OptionsEditorRadios\n isReadonly={isReadonly}\n tabs={tabs}\n defaultTab={defaultTab}\n onModeChange={handleModeChange}\n />\n </>\n );\n}\n"],"names":["Grid","IconButton","MenuItem","TextField","Typography","React","Fragment","useState","produce","Controller","MinusIcon","PlusIcon","OptionsEditorRadios","HTTPSettingsEditor","props","value","onChange","isReadonly","initialSpecDirect","initialSpecProxy","strDirect","strProxy","buildNewHeaders","oldHeaders","oldName","newName","undefined","keys","Object","newHeaders","reduce","acc","val","tabs","label","content","name","render","field","fieldState","fullWidth","directUrl","error","helperText","message","InputProps","readOnly","InputLabelProps","shrink","e","draft","target","proxy","spec","url","sx","mb","variant","container","spacing","allowedEndpoints","length","map","endpointPattern","method","i","item","xs","itemIndex","select","disabled","onClick","filter","fontStyle","paddingTop","paddingLeft","headers","headerName","secret","directModeId","findIndex","tab","proxyModeId","defaultTab","previousSpecDirect","setPreviousSpecDirect","previousSpecProxy","setPreviousSpecProxy","handleModeChange","v","newValue","mt","onModeChange"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/HTTPSettingsEditor/index.ts"],"names":[],"mappings":"AAaA,cAAc,sBAAsB,CAAC"}
|
|
@@ -10,11 +10,6 @@
|
|
|
10
10
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
// See the License for the specific language governing permissions and
|
|
12
12
|
// limitations under the License.
|
|
13
|
-
export * from './
|
|
14
|
-
export * from './WithPluginRegistry';
|
|
15
|
-
export * from './WithPluginSystemBuiltinVariables';
|
|
16
|
-
export * from './WithPluginSystemDatasourceStore';
|
|
17
|
-
export * from './WithPluginSystemVariables';
|
|
18
|
-
export * from './WithTimeRange';
|
|
13
|
+
export * from './HTTPSettingsEditor';
|
|
19
14
|
|
|
20
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/HTTPSettingsEditor/index.ts"],"sourcesContent":["// Copyright 2024 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 './HTTPSettingsEditor';\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,uBAAuB"}
|
|
@@ -77,13 +77,13 @@ export function LegendOptionsEditor({ value, onChange, showValuesEditor = true }
|
|
|
77
77
|
});
|
|
78
78
|
};
|
|
79
79
|
const isValidLegend = validateLegendSpec(value);
|
|
80
|
-
const currentPosition = getLegendPosition(value
|
|
80
|
+
const currentPosition = getLegendPosition(value?.position);
|
|
81
81
|
const legendPositionConfig = LEGEND_POSITIONS_CONFIG[currentPosition];
|
|
82
|
-
const currentMode = getLegendMode(value
|
|
82
|
+
const currentMode = getLegendMode(value?.mode);
|
|
83
83
|
const legendModeConfig = LEGEND_MODE_CONFIG[currentMode];
|
|
84
|
-
const currentSize = getLegendSize(value
|
|
84
|
+
const currentSize = getLegendSize(value?.size);
|
|
85
85
|
const legendSizeConfig = LEGEND_SIZE_CONFIG[currentSize];
|
|
86
|
-
const currentValues =
|
|
86
|
+
const currentValues = value?.values || [];
|
|
87
87
|
const legendValuesConfig = currentValues.reduce((result, item)=>{
|
|
88
88
|
const config = LEGEND_VALUE_CONFIG[item];
|
|
89
89
|
if (config) {
|