@perses-dev/prometheus-plugin 0.37.1 → 0.38.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.
@@ -27,7 +27,7 @@ function _interopRequireDefault(obj) {
27
27
  default: obj
28
28
  };
29
29
  }
30
- function MatcherEditor({ matchers , onChange }) {
30
+ function MatcherEditor({ matchers , onChange , isReadonly }) {
31
31
  return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_material.Stack, {
32
32
  spacing: 1,
33
33
  mb: 2,
@@ -39,6 +39,9 @@ function MatcherEditor({ matchers , onChange }) {
39
39
  fullWidth: true,
40
40
  label: "Series Selector",
41
41
  value: matcher,
42
+ InputProps: {
43
+ readOnly: isReadonly
44
+ },
42
45
  onChange: (e)=>{
43
46
  const newMatchers = (0, _immer.produce)(matchers, (draft)=>{
44
47
  draft[index] = e.target.value;
@@ -53,6 +56,7 @@ function MatcherEditor({ matchers , onChange }) {
53
56
  });
54
57
  onChange(newMatchers);
55
58
  },
59
+ disabled: isReadonly,
56
60
  children: /*#__PURE__*/ (0, _jsxRuntime.jsx)(_trashCan.default, {})
57
61
  })
58
62
  ]
@@ -68,6 +72,7 @@ function MatcherEditor({ matchers , onChange }) {
68
72
  });
69
73
  onChange(newMatchers);
70
74
  },
75
+ disabled: isReadonly,
71
76
  children: "Add Series Selector"
72
77
  })
73
78
  })
@@ -61,6 +61,7 @@ function PrometheusLabelValuesVariableEditor(props) {
61
61
  datasourcePluginKind: "PrometheusDatasource",
62
62
  value: selectedDatasource,
63
63
  onChange: handleDatasourceChange,
64
+ readOnly: props.isReadonly,
64
65
  labelId: "prom-datasource-label",
65
66
  label: "Prometheus Datasource"
66
67
  })
@@ -75,6 +76,9 @@ function PrometheusLabelValuesVariableEditor(props) {
75
76
  ...props.value,
76
77
  label_name: e.target.value
77
78
  });
79
+ },
80
+ InputProps: {
81
+ readOnly: props.isReadonly
78
82
  }
79
83
  }),
80
84
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_matcherEditor.MatcherEditor, {
@@ -84,7 +88,8 @@ function PrometheusLabelValuesVariableEditor(props) {
84
88
  ...props.value,
85
89
  matchers: e
86
90
  });
87
- }
91
+ },
92
+ isReadonly: props.isReadonly
88
93
  })
89
94
  ]
90
95
  });
@@ -118,6 +123,7 @@ function PrometheusLabelNamesVariableEditor(props) {
118
123
  datasourcePluginKind: "PrometheusDatasource",
119
124
  value: selectedDatasource,
120
125
  onChange: handleDatasourceChange,
126
+ disabled: props.isReadonly,
121
127
  labelId: "prom-datasource-label",
122
128
  label: "Prometheus Datasource"
123
129
  })
@@ -125,6 +131,7 @@ function PrometheusLabelNamesVariableEditor(props) {
125
131
  }),
126
132
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_matcherEditor.MatcherEditor, {
127
133
  matchers: (_matchers = props.value.matchers) !== null && _matchers !== void 0 ? _matchers : [],
134
+ isReadonly: props.isReadonly,
128
135
  onChange: (e)=>{
129
136
  props.onChange({
130
137
  ...props.value,
@@ -166,7 +173,8 @@ function PrometheusPromQLVariableEditor(props) {
166
173
  value: selectedDatasource,
167
174
  onChange: handleDatasourceChange,
168
175
  labelId: "prom-datasource-label",
169
- label: "Prometheus Datasource"
176
+ label: "Prometheus Datasource",
177
+ disabled: props.isReadonly
170
178
  })
171
179
  ]
172
180
  }),
@@ -183,11 +191,15 @@ function PrometheusPromQLVariableEditor(props) {
183
191
  expr: query
184
192
  });
185
193
  },
194
+ readOnly: props.isReadonly,
186
195
  width: "100%"
187
196
  }),
188
197
  /*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
189
198
  label: "Label Name",
190
199
  value: props.value.label_name,
200
+ InputProps: {
201
+ readOnly: props.isReadonly
202
+ },
191
203
  onChange: (e)=>{
192
204
  props.onChange({
193
205
  ...props.value,
@@ -55,6 +55,7 @@ function StaticListVariableOptionEditor(props) {
55
55
  options: [],
56
56
  freeSolo: true,
57
57
  clearOnBlur: true,
58
+ readOnly: props.isReadonly,
58
59
  renderInput: (params)=>/*#__PURE__*/ (0, _jsxRuntime.jsx)(_material.TextField, {
59
60
  ...params,
60
61
  label: "Values",
@@ -2,7 +2,8 @@
2
2
  declare type MatcherEditorProps = {
3
3
  matchers: string[];
4
4
  onChange: (matchers: string[]) => void;
5
+ isReadonly?: boolean;
5
6
  };
6
- export declare function MatcherEditor({ matchers, onChange }: MatcherEditorProps): JSX.Element;
7
+ export declare function MatcherEditor({ matchers, onChange, isReadonly }: MatcherEditorProps): JSX.Element;
7
8
  export {};
8
9
  //# sourceMappingURL=MatcherEditor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MatcherEditor.d.ts","sourceRoot":"","sources":["../../src/plugins/MatcherEditor.tsx"],"names":[],"mappings":";AAiBA,aAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACxC,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,kBAAkB,eA6CvE"}
1
+ {"version":3,"file":"MatcherEditor.d.ts","sourceRoot":"","sources":["../../src/plugins/MatcherEditor.tsx"],"names":[],"mappings":";AAiBA,aAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,kBAAkB,eAkDnF"}
@@ -14,7 +14,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import { Stack, TextField, Button, Box, IconButton } from '@mui/material';
15
15
  import { produce } from 'immer';
16
16
  import TrashIcon from 'mdi-material-ui/TrashCan';
17
- export function MatcherEditor({ matchers , onChange }) {
17
+ export function MatcherEditor({ matchers , onChange , isReadonly }) {
18
18
  return /*#__PURE__*/ _jsxs(Stack, {
19
19
  spacing: 1,
20
20
  mb: 2,
@@ -26,6 +26,9 @@ export function MatcherEditor({ matchers , onChange }) {
26
26
  fullWidth: true,
27
27
  label: "Series Selector",
28
28
  value: matcher,
29
+ InputProps: {
30
+ readOnly: isReadonly
31
+ },
29
32
  onChange: (e)=>{
30
33
  const newMatchers = produce(matchers, (draft)=>{
31
34
  draft[index] = e.target.value;
@@ -40,6 +43,7 @@ export function MatcherEditor({ matchers , onChange }) {
40
43
  });
41
44
  onChange(newMatchers);
42
45
  },
46
+ disabled: isReadonly,
43
47
  children: /*#__PURE__*/ _jsx(TrashIcon, {})
44
48
  })
45
49
  ]
@@ -55,6 +59,7 @@ export function MatcherEditor({ matchers , onChange }) {
55
59
  });
56
60
  onChange(newMatchers);
57
61
  },
62
+ disabled: isReadonly,
58
63
  children: "Add Series Selector"
59
64
  })
60
65
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/MatcherEditor.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 { Stack, TextField, Button, Box, IconButton } from '@mui/material';\nimport { produce } from 'immer';\nimport TrashIcon from 'mdi-material-ui/TrashCan';\n\ntype MatcherEditorProps = {\n matchers: string[];\n onChange: (matchers: string[]) => void;\n};\n\nexport function MatcherEditor({ matchers, onChange }: MatcherEditorProps) {\n return (\n <Stack spacing={1} mb={2}>\n {matchers.map((matcher, index) => (\n <Box key={index} display=\"flex\">\n <TextField\n fullWidth\n label=\"Series Selector\"\n value={matcher}\n onChange={(e) => {\n const newMatchers = produce(matchers, (draft) => {\n draft[index] = e.target.value;\n });\n onChange(newMatchers);\n }}\n />\n <IconButton\n onClick={() => {\n const newMatchers = produce(matchers, (draft) => {\n draft.splice(index, 1);\n });\n onChange(newMatchers);\n }}\n >\n <TrashIcon />\n </IconButton>\n </Box>\n ))}\n <Box>\n <Button\n fullWidth={false}\n color=\"secondary\"\n variant=\"outlined\"\n onClick={() => {\n const newMatchers = produce(matchers, (draft) => {\n draft.push('');\n });\n onChange(newMatchers);\n }}\n >\n Add Series Selector\n </Button>\n </Box>\n </Stack>\n );\n}\n"],"names":["Stack","TextField","Button","Box","IconButton","produce","TrashIcon","MatcherEditor","matchers","onChange","spacing","mb","map","matcher","index","display","fullWidth","label","value","e","newMatchers","draft","target","onClick","splice","color","variant","push"],"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;AAAA,SAASA,KAAK,EAAEC,SAAS,EAAEC,MAAM,EAAEC,GAAG,EAAEC,UAAU,QAAQ,eAAe,CAAC;AAC1E,SAASC,OAAO,QAAQ,OAAO,CAAC;AAChC,OAAOC,SAAS,MAAM,0BAA0B,CAAC;AAOjD,OAAO,SAASC,aAAa,CAAC,EAAEC,QAAQ,CAAA,EAAEC,QAAQ,CAAA,EAAsB,EAAE;IACxE,qBACE,MAACT,KAAK;QAACU,OAAO,EAAE,CAAC;QAAEC,EAAE,EAAE,CAAC;;YACrBH,QAAQ,CAACI,GAAG,CAAC,CAACC,OAAO,EAAEC,KAAK,iBAC3B,MAACX,GAAG;oBAAaY,OAAO,EAAC,MAAM;;sCAC7B,KAACd,SAAS;4BACRe,SAAS;4BACTC,KAAK,EAAC,iBAAiB;4BACvBC,KAAK,EAAEL,OAAO;4BACdJ,QAAQ,EAAE,CAACU,CAAC,GAAK;gCACf,MAAMC,WAAW,GAAGf,OAAO,CAACG,QAAQ,EAAE,CAACa,KAAK,GAAK;oCAC/CA,KAAK,CAACP,KAAK,CAAC,GAAGK,CAAC,CAACG,MAAM,CAACJ,KAAK,CAAC;gCAChC,CAAC,CAAC,AAAC;gCACHT,QAAQ,CAACW,WAAW,CAAC,CAAC;4BACxB,CAAC;0BACD;sCACF,KAAChB,UAAU;4BACTmB,OAAO,EAAE,IAAM;gCACb,MAAMH,WAAW,GAAGf,OAAO,CAACG,QAAQ,EAAE,CAACa,KAAK,GAAK;oCAC/CA,KAAK,CAACG,MAAM,CAACV,KAAK,EAAE,CAAC,CAAC,CAAC;gCACzB,CAAC,CAAC,AAAC;gCACHL,QAAQ,CAACW,WAAW,CAAC,CAAC;4BACxB,CAAC;sCAED,cAAA,KAACd,SAAS,KAAG;0BACF;;mBArBLQ,KAAK,CAsBT,AACP,CAAC;0BACF,KAACX,GAAG;0BACF,cAAA,KAACD,MAAM;oBACLc,SAAS,EAAE,KAAK;oBAChBS,KAAK,EAAC,WAAW;oBACjBC,OAAO,EAAC,UAAU;oBAClBH,OAAO,EAAE,IAAM;wBACb,MAAMH,WAAW,GAAGf,OAAO,CAACG,QAAQ,EAAE,CAACa,KAAK,GAAK;4BAC/CA,KAAK,CAACM,IAAI,CAAC,EAAE,CAAC,CAAC;wBACjB,CAAC,CAAC,AAAC;wBACHlB,QAAQ,CAACW,WAAW,CAAC,CAAC;oBACxB,CAAC;8BACF,qBAED;kBAAS;cACL;;MACA,CACR;AACJ,CAAC"}
1
+ {"version":3,"sources":["../../src/plugins/MatcherEditor.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 { Stack, TextField, Button, Box, IconButton } from '@mui/material';\nimport { produce } from 'immer';\nimport TrashIcon from 'mdi-material-ui/TrashCan';\n\ntype MatcherEditorProps = {\n matchers: string[];\n onChange: (matchers: string[]) => void;\n isReadonly?: boolean;\n};\n\nexport function MatcherEditor({ matchers, onChange, isReadonly }: MatcherEditorProps) {\n return (\n <Stack spacing={1} mb={2}>\n {matchers.map((matcher, index) => (\n <Box key={index} display=\"flex\">\n <TextField\n fullWidth\n label=\"Series Selector\"\n value={matcher}\n InputProps={{\n readOnly: isReadonly,\n }}\n onChange={(e) => {\n const newMatchers = produce(matchers, (draft) => {\n draft[index] = e.target.value;\n });\n onChange(newMatchers);\n }}\n />\n <IconButton\n onClick={() => {\n const newMatchers = produce(matchers, (draft) => {\n draft.splice(index, 1);\n });\n onChange(newMatchers);\n }}\n disabled={isReadonly}\n >\n <TrashIcon />\n </IconButton>\n </Box>\n ))}\n <Box>\n <Button\n fullWidth={false}\n color=\"secondary\"\n variant=\"outlined\"\n onClick={() => {\n const newMatchers = produce(matchers, (draft) => {\n draft.push('');\n });\n onChange(newMatchers);\n }}\n disabled={isReadonly}\n >\n Add Series Selector\n </Button>\n </Box>\n </Stack>\n );\n}\n"],"names":["Stack","TextField","Button","Box","IconButton","produce","TrashIcon","MatcherEditor","matchers","onChange","isReadonly","spacing","mb","map","matcher","index","display","fullWidth","label","value","InputProps","readOnly","e","newMatchers","draft","target","onClick","splice","disabled","color","variant","push"],"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;AAAA,SAASA,KAAK,EAAEC,SAAS,EAAEC,MAAM,EAAEC,GAAG,EAAEC,UAAU,QAAQ,eAAe,CAAC;AAC1E,SAASC,OAAO,QAAQ,OAAO,CAAC;AAChC,OAAOC,SAAS,MAAM,0BAA0B,CAAC;AAQjD,OAAO,SAASC,aAAa,CAAC,EAAEC,QAAQ,CAAA,EAAEC,QAAQ,CAAA,EAAEC,UAAU,CAAA,EAAsB,EAAE;IACpF,qBACE,MAACV,KAAK;QAACW,OAAO,EAAE,CAAC;QAAEC,EAAE,EAAE,CAAC;;YACrBJ,QAAQ,CAACK,GAAG,CAAC,CAACC,OAAO,EAAEC,KAAK,iBAC3B,MAACZ,GAAG;oBAAaa,OAAO,EAAC,MAAM;;sCAC7B,KAACf,SAAS;4BACRgB,SAAS;4BACTC,KAAK,EAAC,iBAAiB;4BACvBC,KAAK,EAAEL,OAAO;4BACdM,UAAU,EAAE;gCACVC,QAAQ,EAAEX,UAAU;6BACrB;4BACDD,QAAQ,EAAE,CAACa,CAAC,GAAK;gCACf,MAAMC,WAAW,GAAGlB,OAAO,CAACG,QAAQ,EAAE,CAACgB,KAAK,GAAK;oCAC/CA,KAAK,CAACT,KAAK,CAAC,GAAGO,CAAC,CAACG,MAAM,CAACN,KAAK,CAAC;gCAChC,CAAC,CAAC,AAAC;gCACHV,QAAQ,CAACc,WAAW,CAAC,CAAC;4BACxB,CAAC;0BACD;sCACF,KAACnB,UAAU;4BACTsB,OAAO,EAAE,IAAM;gCACb,MAAMH,WAAW,GAAGlB,OAAO,CAACG,QAAQ,EAAE,CAACgB,KAAK,GAAK;oCAC/CA,KAAK,CAACG,MAAM,CAACZ,KAAK,EAAE,CAAC,CAAC,CAAC;gCACzB,CAAC,CAAC,AAAC;gCACHN,QAAQ,CAACc,WAAW,CAAC,CAAC;4BACxB,CAAC;4BACDK,QAAQ,EAAElB,UAAU;sCAEpB,cAAA,KAACJ,SAAS,KAAG;0BACF;;mBAzBLS,KAAK,CA0BT,AACP,CAAC;0BACF,KAACZ,GAAG;0BACF,cAAA,KAACD,MAAM;oBACLe,SAAS,EAAE,KAAK;oBAChBY,KAAK,EAAC,WAAW;oBACjBC,OAAO,EAAC,UAAU;oBAClBJ,OAAO,EAAE,IAAM;wBACb,MAAMH,WAAW,GAAGlB,OAAO,CAACG,QAAQ,EAAE,CAACgB,KAAK,GAAK;4BAC/CA,KAAK,CAACO,IAAI,CAAC,EAAE,CAAC,CAAC;wBACjB,CAAC,CAAC,AAAC;wBACHtB,QAAQ,CAACc,WAAW,CAAC,CAAC;oBACxB,CAAC;oBACDK,QAAQ,EAAElB,UAAU;8BACrB,qBAED;kBAAS;cACL;;MACA,CACR;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prometheus-variables.d.ts","sourceRoot":"","sources":["../../src/plugins/prometheus-variables.tsx"],"names":[],"mappings":"AAYA,OAAO,EAML,cAAc,EAGf,MAAM,2BAA2B,CAAC;AAcnC,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAmLjB,eAAO,MAAM,4BAA4B,EAAE,cAAc,CAAC,mCAAmC,CAgB5F,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,cAAc,CAAC,oCAAoC,CA8B9F,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,+BAA+B,CAwBpF,CAAC"}
1
+ {"version":3,"file":"prometheus-variables.d.ts","sourceRoot":"","sources":["../../src/plugins/prometheus-variables.tsx"],"names":[],"mappings":"AAYA,OAAO,EAML,cAAc,EAGf,MAAM,2BAA2B,CAAC;AAcnC,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,+BAA+B,EAChC,MAAM,SAAS,CAAC;AA+LjB,eAAO,MAAM,4BAA4B,EAAE,cAAc,CAAC,mCAAmC,CAgB5F,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,cAAc,CAAC,oCAAoC,CA8B9F,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,+BAA+B,CAwBpF,CAAC"}
@@ -46,6 +46,7 @@ function PrometheusLabelValuesVariableEditor(props) {
46
46
  datasourcePluginKind: "PrometheusDatasource",
47
47
  value: selectedDatasource,
48
48
  onChange: handleDatasourceChange,
49
+ readOnly: props.isReadonly,
49
50
  labelId: "prom-datasource-label",
50
51
  label: "Prometheus Datasource"
51
52
  })
@@ -60,6 +61,9 @@ function PrometheusLabelValuesVariableEditor(props) {
60
61
  ...props.value,
61
62
  label_name: e.target.value
62
63
  });
64
+ },
65
+ InputProps: {
66
+ readOnly: props.isReadonly
63
67
  }
64
68
  }),
65
69
  /*#__PURE__*/ _jsx(MatcherEditor, {
@@ -69,7 +73,8 @@ function PrometheusLabelValuesVariableEditor(props) {
69
73
  ...props.value,
70
74
  matchers: e
71
75
  });
72
- }
76
+ },
77
+ isReadonly: props.isReadonly
73
78
  })
74
79
  ]
75
80
  });
@@ -103,6 +108,7 @@ function PrometheusLabelNamesVariableEditor(props) {
103
108
  datasourcePluginKind: "PrometheusDatasource",
104
109
  value: selectedDatasource,
105
110
  onChange: handleDatasourceChange,
111
+ disabled: props.isReadonly,
106
112
  labelId: "prom-datasource-label",
107
113
  label: "Prometheus Datasource"
108
114
  })
@@ -110,6 +116,7 @@ function PrometheusLabelNamesVariableEditor(props) {
110
116
  }),
111
117
  /*#__PURE__*/ _jsx(MatcherEditor, {
112
118
  matchers: (_matchers = props.value.matchers) !== null && _matchers !== void 0 ? _matchers : [],
119
+ isReadonly: props.isReadonly,
113
120
  onChange: (e)=>{
114
121
  props.onChange({
115
122
  ...props.value,
@@ -151,7 +158,8 @@ function PrometheusPromQLVariableEditor(props) {
151
158
  value: selectedDatasource,
152
159
  onChange: handleDatasourceChange,
153
160
  labelId: "prom-datasource-label",
154
- label: "Prometheus Datasource"
161
+ label: "Prometheus Datasource",
162
+ disabled: props.isReadonly
155
163
  })
156
164
  ]
157
165
  }),
@@ -168,11 +176,15 @@ function PrometheusPromQLVariableEditor(props) {
168
176
  expr: query
169
177
  });
170
178
  },
179
+ readOnly: props.isReadonly,
171
180
  width: "100%"
172
181
  }),
173
182
  /*#__PURE__*/ _jsx(TextField, {
174
183
  label: "Label Name",
175
184
  value: props.value.label_name,
185
+ InputProps: {
186
+ readOnly: props.isReadonly
187
+ },
176
188
  onChange: (e)=>{
177
189
  props.onChange({
178
190
  ...props.value,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/prometheus-variables.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.\nimport {\n DatasourceSelect,\n DatasourceSelectProps,\n OptionsEditorProps,\n useDatasourceClient,\n VariableOption,\n VariablePlugin,\n parseTemplateVariables,\n replaceTemplateVariables,\n} from '@perses-dev/plugin-system';\nimport { FormControl, InputLabel, Stack, TextField } from '@mui/material';\nimport { produce } from 'immer';\nimport {\n DEFAULT_PROM,\n getPrometheusTimeRange,\n isDefaultPromSelector,\n isPrometheusDatasourceSelector,\n MatrixData,\n PROM_DATASOURCE_KIND,\n PrometheusClient,\n VectorData,\n} from '../model';\nimport { PromQLEditor } from '../components';\nimport {\n PrometheusLabelNamesVariableOptions,\n PrometheusLabelValuesVariableOptions,\n PrometheusPromQLVariableOptions,\n} from './types';\nimport { MatcherEditor } from './MatcherEditor';\n\nfunction PrometheusLabelValuesVariableEditor(props: OptionsEditorProps<PrometheusLabelValuesVariableOptions>) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_PROM;\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isPrometheusDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n draft.datasource = isDefaultPromSelector(next) ? undefined : next;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Prometheus datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\">\n <InputLabel id=\"prom-datasource-label\">Prometheus Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind=\"PrometheusDatasource\"\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n labelId=\"prom-datasource-label\"\n label=\"Prometheus Datasource\"\n />\n </FormControl>\n <TextField\n label=\"Label Name\"\n required\n value={props.value.label_name}\n onChange={(e) => {\n props.onChange({ ...props.value, label_name: e.target.value });\n }}\n />\n <MatcherEditor\n matchers={props.value.matchers ?? []}\n onChange={(e) => {\n props.onChange({ ...props.value, matchers: e });\n }}\n />\n </Stack>\n );\n}\n\nfunction PrometheusLabelNamesVariableEditor(props: OptionsEditorProps<PrometheusLabelNamesVariableOptions>) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_PROM;\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isPrometheusDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n draft.datasource = isDefaultPromSelector(next) ? undefined : next;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Prometheus datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\">\n <InputLabel id=\"prom-datasource-label\">Prometheus Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind=\"PrometheusDatasource\"\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n labelId=\"prom-datasource-label\"\n label=\"Prometheus Datasource\"\n />\n </FormControl>\n <MatcherEditor\n matchers={props.value.matchers ?? []}\n onChange={(e) => {\n props.onChange({ ...props.value, matchers: e });\n }}\n />\n </Stack>\n );\n}\n\nfunction PrometheusPromQLVariableEditor(props: OptionsEditorProps<PrometheusPromQLVariableOptions>) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_PROM;\n\n const { data: client } = useDatasourceClient<PrometheusClient>(selectedDatasource);\n const promURL = client?.options.datasourceUrl;\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isPrometheusDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n draft.datasource = isDefaultPromSelector(next) ? undefined : next;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Prometheus datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\">\n <InputLabel id=\"prom-datasource-label\">Prometheus Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind={PROM_DATASOURCE_KIND}\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n labelId=\"prom-datasource-label\"\n label=\"Prometheus Datasource\"\n />\n </FormControl>\n <PromQLEditor\n completeConfig={{ remote: { url: promURL } }}\n value={value.expr}\n onChange={(query) => {\n props.onChange({ ...props.value, expr: query });\n }}\n width=\"100%\"\n />\n <TextField\n label=\"Label Name\"\n value={props.value.label_name}\n onChange={(e) => {\n props.onChange({ ...props.value, label_name: e.target.value });\n }}\n />\n </Stack>\n );\n}\n\nfunction capturingMatrix(matrix: MatrixData, label_name: string): string[] {\n const captured = new Set<string>();\n for (const sample of matrix.result) {\n const value = sample.metric[label_name];\n if (value !== undefined) {\n captured.add(value);\n }\n }\n return Array.from(captured.values());\n}\n\nfunction capturingVector(vector: VectorData, label_name: string): string[] {\n const captured = new Set<string>();\n for (const sample of vector.result) {\n const value = sample.metric[label_name];\n if (value !== undefined) {\n captured.add(value);\n }\n }\n return Array.from(captured.values());\n}\n\n/**\n * Takes a list of strings and returns a list of VariableOptions\n */\nconst stringArrayToVariableOptions = (values?: string[]): VariableOption[] => {\n if (!values) return [];\n return values.map((value) => ({\n value,\n label: value,\n }));\n};\n\nexport const PrometheusLabelNamesVariable: VariablePlugin<PrometheusLabelNamesVariableOptions> = {\n getVariableOptions: async (spec, ctx) => {\n const client: PrometheusClient = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? DEFAULT_PROM);\n const match = spec.matchers ? spec.matchers.map((m) => replaceTemplateVariables(m, ctx.variables)) : undefined;\n const timeRange = getPrometheusTimeRange(ctx.timeRange);\n\n const { data: options } = await client.labelNames({ 'match[]': match, ...timeRange });\n return {\n data: stringArrayToVariableOptions(options),\n };\n },\n dependsOn: (spec) => {\n return { variables: spec.matchers?.map((m) => parseTemplateVariables(m)).flat() || [] };\n },\n OptionsEditorComponent: PrometheusLabelNamesVariableEditor,\n createInitialOptions: () => ({}),\n};\n\nexport const PrometheusLabelValuesVariable: VariablePlugin<PrometheusLabelValuesVariableOptions> = {\n getVariableOptions: async (spec, ctx) => {\n const pluginDef = spec;\n const client: PrometheusClient = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? DEFAULT_PROM);\n const match = pluginDef.matchers\n ? pluginDef.matchers.map((m) => replaceTemplateVariables(m, ctx.variables))\n : undefined;\n\n const timeRange = getPrometheusTimeRange(ctx.timeRange);\n\n const { data: options } = await client.labelValues({\n labelName: replaceTemplateVariables(pluginDef.label_name, ctx.variables),\n 'match[]': match,\n ...timeRange,\n });\n return {\n data: stringArrayToVariableOptions(options),\n };\n },\n dependsOn: (spec) => {\n return {\n variables:\n spec.matchers\n ?.map((m) => parseTemplateVariables(m))\n .flat()\n .concat(parseTemplateVariables(spec.label_name)) || [],\n };\n },\n OptionsEditorComponent: PrometheusLabelValuesVariableEditor,\n createInitialOptions: () => ({ label_name: '' }),\n};\n\nexport const PrometheusPromQLVariable: VariablePlugin<PrometheusPromQLVariableOptions> = {\n getVariableOptions: async (spec, ctx) => {\n const client: PrometheusClient = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? DEFAULT_PROM);\n // TODO we may want to manage a range query as well.\n const { data: options } = await client.instantQuery({\n query: replaceTemplateVariables(spec.expr, ctx.variables),\n });\n const labelName = replaceTemplateVariables(spec.label_name, ctx.variables);\n let values: string[] = [];\n if (options?.resultType === 'matrix') {\n values = capturingMatrix(options, labelName);\n } else if (options?.resultType === 'vector') {\n values = capturingVector(options, labelName);\n }\n\n return {\n data: stringArrayToVariableOptions(values),\n };\n },\n dependsOn: (spec) => {\n return { variables: parseTemplateVariables(spec.expr).concat(parseTemplateVariables(spec.label_name)) };\n },\n OptionsEditorComponent: PrometheusPromQLVariableEditor,\n createInitialOptions: () => ({ expr: '', label_name: '' }),\n};\n"],"names":["DatasourceSelect","useDatasourceClient","parseTemplateVariables","replaceTemplateVariables","FormControl","InputLabel","Stack","TextField","produce","DEFAULT_PROM","getPrometheusTimeRange","isDefaultPromSelector","isPrometheusDatasourceSelector","PROM_DATASOURCE_KIND","PromQLEditor","MatcherEditor","PrometheusLabelValuesVariableEditor","props","onChange","value","datasource","selectedDatasource","handleDatasourceChange","next","draft","undefined","Error","spacing","margin","id","datasourcePluginKind","labelId","label","required","label_name","e","target","matchers","PrometheusLabelNamesVariableEditor","PrometheusPromQLVariableEditor","data","client","promURL","options","datasourceUrl","completeConfig","remote","url","expr","query","width","capturingMatrix","matrix","captured","Set","sample","result","metric","add","Array","from","values","capturingVector","vector","stringArrayToVariableOptions","map","PrometheusLabelNamesVariable","getVariableOptions","spec","ctx","datasourceStore","getDatasourceClient","match","m","variables","timeRange","labelNames","dependsOn","flat","OptionsEditorComponent","createInitialOptions","PrometheusLabelValuesVariable","pluginDef","labelValues","labelName","concat","PrometheusPromQLVariable","instantQuery","resultType"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/plugins/prometheus-variables.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.\nimport {\n DatasourceSelect,\n DatasourceSelectProps,\n OptionsEditorProps,\n useDatasourceClient,\n VariableOption,\n VariablePlugin,\n parseTemplateVariables,\n replaceTemplateVariables,\n} from '@perses-dev/plugin-system';\nimport { FormControl, InputLabel, Stack, TextField } from '@mui/material';\nimport { produce } from 'immer';\nimport {\n DEFAULT_PROM,\n getPrometheusTimeRange,\n isDefaultPromSelector,\n isPrometheusDatasourceSelector,\n MatrixData,\n PROM_DATASOURCE_KIND,\n PrometheusClient,\n VectorData,\n} from '../model';\nimport { PromQLEditor } from '../components';\nimport {\n PrometheusLabelNamesVariableOptions,\n PrometheusLabelValuesVariableOptions,\n PrometheusPromQLVariableOptions,\n} from './types';\nimport { MatcherEditor } from './MatcherEditor';\n\nfunction PrometheusLabelValuesVariableEditor(props: OptionsEditorProps<PrometheusLabelValuesVariableOptions>) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_PROM;\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isPrometheusDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n draft.datasource = isDefaultPromSelector(next) ? undefined : next;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Prometheus datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\">\n <InputLabel id=\"prom-datasource-label\">Prometheus Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind=\"PrometheusDatasource\"\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n readOnly={props.isReadonly}\n labelId=\"prom-datasource-label\"\n label=\"Prometheus Datasource\"\n />\n </FormControl>\n <TextField\n label=\"Label Name\"\n required\n value={props.value.label_name}\n onChange={(e) => {\n props.onChange({ ...props.value, label_name: e.target.value });\n }}\n InputProps={{\n readOnly: props.isReadonly,\n }}\n />\n <MatcherEditor\n matchers={props.value.matchers ?? []}\n onChange={(e) => {\n props.onChange({ ...props.value, matchers: e });\n }}\n isReadonly={props.isReadonly}\n />\n </Stack>\n );\n}\n\nfunction PrometheusLabelNamesVariableEditor(props: OptionsEditorProps<PrometheusLabelNamesVariableOptions>) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_PROM;\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isPrometheusDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n draft.datasource = isDefaultPromSelector(next) ? undefined : next;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Prometheus datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\">\n <InputLabel id=\"prom-datasource-label\">Prometheus Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind=\"PrometheusDatasource\"\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n disabled={props.isReadonly}\n labelId=\"prom-datasource-label\"\n label=\"Prometheus Datasource\"\n />\n </FormControl>\n <MatcherEditor\n matchers={props.value.matchers ?? []}\n isReadonly={props.isReadonly}\n onChange={(e) => {\n props.onChange({ ...props.value, matchers: e });\n }}\n />\n </Stack>\n );\n}\n\nfunction PrometheusPromQLVariableEditor(props: OptionsEditorProps<PrometheusPromQLVariableOptions>) {\n const { onChange, value } = props;\n const { datasource } = value;\n const selectedDatasource = datasource ?? DEFAULT_PROM;\n\n const { data: client } = useDatasourceClient<PrometheusClient>(selectedDatasource);\n const promURL = client?.options.datasourceUrl;\n\n const handleDatasourceChange: DatasourceSelectProps['onChange'] = (next) => {\n if (isPrometheusDatasourceSelector(next)) {\n onChange(\n produce(value, (draft) => {\n // If they're using the default, just omit the datasource prop (i.e. set to undefined)\n draft.datasource = isDefaultPromSelector(next) ? undefined : next;\n })\n );\n return;\n }\n\n throw new Error('Got unexpected non-Prometheus datasource selector');\n };\n\n return (\n <Stack spacing={2}>\n <FormControl margin=\"dense\">\n <InputLabel id=\"prom-datasource-label\">Prometheus Datasource</InputLabel>\n <DatasourceSelect\n datasourcePluginKind={PROM_DATASOURCE_KIND}\n value={selectedDatasource}\n onChange={handleDatasourceChange}\n labelId=\"prom-datasource-label\"\n label=\"Prometheus Datasource\"\n disabled={props.isReadonly}\n />\n </FormControl>\n <PromQLEditor\n completeConfig={{ remote: { url: promURL } }}\n value={value.expr}\n onChange={(query) => {\n props.onChange({ ...props.value, expr: query });\n }}\n readOnly={props.isReadonly}\n width=\"100%\"\n />\n <TextField\n label=\"Label Name\"\n value={props.value.label_name}\n InputProps={{\n readOnly: props.isReadonly,\n }}\n onChange={(e) => {\n props.onChange({ ...props.value, label_name: e.target.value });\n }}\n />\n </Stack>\n );\n}\n\nfunction capturingMatrix(matrix: MatrixData, label_name: string): string[] {\n const captured = new Set<string>();\n for (const sample of matrix.result) {\n const value = sample.metric[label_name];\n if (value !== undefined) {\n captured.add(value);\n }\n }\n return Array.from(captured.values());\n}\n\nfunction capturingVector(vector: VectorData, label_name: string): string[] {\n const captured = new Set<string>();\n for (const sample of vector.result) {\n const value = sample.metric[label_name];\n if (value !== undefined) {\n captured.add(value);\n }\n }\n return Array.from(captured.values());\n}\n\n/**\n * Takes a list of strings and returns a list of VariableOptions\n */\nconst stringArrayToVariableOptions = (values?: string[]): VariableOption[] => {\n if (!values) return [];\n return values.map((value) => ({\n value,\n label: value,\n }));\n};\n\nexport const PrometheusLabelNamesVariable: VariablePlugin<PrometheusLabelNamesVariableOptions> = {\n getVariableOptions: async (spec, ctx) => {\n const client: PrometheusClient = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? DEFAULT_PROM);\n const match = spec.matchers ? spec.matchers.map((m) => replaceTemplateVariables(m, ctx.variables)) : undefined;\n const timeRange = getPrometheusTimeRange(ctx.timeRange);\n\n const { data: options } = await client.labelNames({ 'match[]': match, ...timeRange });\n return {\n data: stringArrayToVariableOptions(options),\n };\n },\n dependsOn: (spec) => {\n return { variables: spec.matchers?.map((m) => parseTemplateVariables(m)).flat() || [] };\n },\n OptionsEditorComponent: PrometheusLabelNamesVariableEditor,\n createInitialOptions: () => ({}),\n};\n\nexport const PrometheusLabelValuesVariable: VariablePlugin<PrometheusLabelValuesVariableOptions> = {\n getVariableOptions: async (spec, ctx) => {\n const pluginDef = spec;\n const client: PrometheusClient = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? DEFAULT_PROM);\n const match = pluginDef.matchers\n ? pluginDef.matchers.map((m) => replaceTemplateVariables(m, ctx.variables))\n : undefined;\n\n const timeRange = getPrometheusTimeRange(ctx.timeRange);\n\n const { data: options } = await client.labelValues({\n labelName: replaceTemplateVariables(pluginDef.label_name, ctx.variables),\n 'match[]': match,\n ...timeRange,\n });\n return {\n data: stringArrayToVariableOptions(options),\n };\n },\n dependsOn: (spec) => {\n return {\n variables:\n spec.matchers\n ?.map((m) => parseTemplateVariables(m))\n .flat()\n .concat(parseTemplateVariables(spec.label_name)) || [],\n };\n },\n OptionsEditorComponent: PrometheusLabelValuesVariableEditor,\n createInitialOptions: () => ({ label_name: '' }),\n};\n\nexport const PrometheusPromQLVariable: VariablePlugin<PrometheusPromQLVariableOptions> = {\n getVariableOptions: async (spec, ctx) => {\n const client: PrometheusClient = await ctx.datasourceStore.getDatasourceClient(spec.datasource ?? DEFAULT_PROM);\n // TODO we may want to manage a range query as well.\n const { data: options } = await client.instantQuery({\n query: replaceTemplateVariables(spec.expr, ctx.variables),\n });\n const labelName = replaceTemplateVariables(spec.label_name, ctx.variables);\n let values: string[] = [];\n if (options?.resultType === 'matrix') {\n values = capturingMatrix(options, labelName);\n } else if (options?.resultType === 'vector') {\n values = capturingVector(options, labelName);\n }\n\n return {\n data: stringArrayToVariableOptions(values),\n };\n },\n dependsOn: (spec) => {\n return { variables: parseTemplateVariables(spec.expr).concat(parseTemplateVariables(spec.label_name)) };\n },\n OptionsEditorComponent: PrometheusPromQLVariableEditor,\n createInitialOptions: () => ({ expr: '', label_name: '' }),\n};\n"],"names":["DatasourceSelect","useDatasourceClient","parseTemplateVariables","replaceTemplateVariables","FormControl","InputLabel","Stack","TextField","produce","DEFAULT_PROM","getPrometheusTimeRange","isDefaultPromSelector","isPrometheusDatasourceSelector","PROM_DATASOURCE_KIND","PromQLEditor","MatcherEditor","PrometheusLabelValuesVariableEditor","props","onChange","value","datasource","selectedDatasource","handleDatasourceChange","next","draft","undefined","Error","spacing","margin","id","datasourcePluginKind","readOnly","isReadonly","labelId","label","required","label_name","e","target","InputProps","matchers","PrometheusLabelNamesVariableEditor","disabled","PrometheusPromQLVariableEditor","data","client","promURL","options","datasourceUrl","completeConfig","remote","url","expr","query","width","capturingMatrix","matrix","captured","Set","sample","result","metric","add","Array","from","values","capturingVector","vector","stringArrayToVariableOptions","map","PrometheusLabelNamesVariable","getVariableOptions","spec","ctx","datasourceStore","getDatasourceClient","match","m","variables","timeRange","labelNames","dependsOn","flat","OptionsEditorComponent","createInitialOptions","PrometheusLabelValuesVariable","pluginDef","labelValues","labelName","concat","PrometheusPromQLVariable","instantQuery","resultType"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/plugins/variable.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAG/F,aAAK,gBAAgB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEhD,aAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAkDF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,yBAAyB,CAiBxE,CAAC"}
1
+ {"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/plugins/variable.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAsB,MAAM,2BAA2B,CAAC;AAG/F,aAAK,gBAAgB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEhD,aAAK,yBAAyB,GAAG;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAmDF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,yBAAyB,CAiBxE,CAAC"}
@@ -47,6 +47,7 @@ function StaticListVariableOptionEditor(props) {
47
47
  options: [],
48
48
  freeSolo: true,
49
49
  clearOnBlur: true,
50
+ readOnly: props.isReadonly,
50
51
  renderInput: (params)=>/*#__PURE__*/ _jsx(TextField, {
51
52
  ...params,
52
53
  label: "Values",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/variable.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 { VariablePlugin, VariableOption, OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { Autocomplete, TextField } from '@mui/material';\n\ntype StaticListOption = string | VariableOption;\n\ntype StaticListVariableOptions = {\n values: StaticListOption[];\n};\n\nfunction StaticListVariableOptionEditor(props: OptionsEditorProps<StaticListVariableOptions>) {\n const value = props.value.values.map((v) => {\n if (typeof v === 'string') {\n return v;\n } else {\n return v.value;\n }\n });\n\n const onChange = (__: unknown, value: string[]) => {\n props.onChange({\n values: value.map((v) => {\n return { value: v, label: v };\n }),\n });\n };\n\n return (\n <div>\n <Autocomplete\n onPaste={(e) => {\n // Append new values on paste\n const v = e.clipboardData.getData('text/plain');\n if (v) {\n const values = v.split(',');\n onChange(null, value.concat(values));\n e.preventDefault();\n }\n }}\n multiple\n value={value}\n onChange={onChange}\n options={[]}\n freeSolo\n clearOnBlur\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Values\"\n placeholder=\"Values\"\n helperText='Type new value then press \"Enter\" to add.'\n />\n )}\n />\n </div>\n );\n}\n\nexport const StaticListVariable: VariablePlugin<StaticListVariableOptions> = {\n getVariableOptions: async (spec) => {\n const values = spec.values?.map((v) => {\n if (typeof v === 'string') {\n return { label: v, value: v };\n }\n return v;\n });\n return {\n data: values,\n };\n },\n dependsOn: () => {\n return { variables: [] };\n },\n OptionsEditorComponent: StaticListVariableOptionEditor,\n createInitialOptions: () => ({ values: [] }),\n};\n"],"names":["Autocomplete","TextField","StaticListVariableOptionEditor","props","value","values","map","v","onChange","__","label","div","onPaste","e","clipboardData","getData","split","concat","preventDefault","multiple","options","freeSolo","clearOnBlur","renderInput","params","placeholder","helperText","StaticListVariable","getVariableOptions","spec","data","dependsOn","variables","OptionsEditorComponent","createInitialOptions"],"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,YAAY,EAAEC,SAAS,QAAQ,eAAe,CAAC;AAQxD,SAASC,8BAA8B,CAACC,KAAoD,EAAE;IAC5F,MAAMC,KAAK,GAAGD,KAAK,CAACC,KAAK,CAACC,MAAM,CAACC,GAAG,CAAC,CAACC,CAAC,GAAK;QAC1C,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;YACzB,OAAOA,CAAC,CAAC;QACX,OAAO;YACL,OAAOA,CAAC,CAACH,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,AAAC;IAEH,MAAMI,QAAQ,GAAG,CAACC,EAAW,EAAEL,KAAe,GAAK;QACjDD,KAAK,CAACK,QAAQ,CAAC;YACbH,MAAM,EAAED,KAAK,CAACE,GAAG,CAAC,CAACC,CAAC,GAAK;gBACvB,OAAO;oBAAEH,KAAK,EAAEG,CAAC;oBAAEG,KAAK,EAAEH,CAAC;iBAAE,CAAC;YAChC,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC,AAAC;IAEF,qBACE,KAACI,KAAG;kBACF,cAAA,KAACX,YAAY;YACXY,OAAO,EAAE,CAACC,CAAC,GAAK;gBACd,6BAA6B;gBAC7B,MAAMN,CAAC,GAAGM,CAAC,CAACC,aAAa,CAACC,OAAO,CAAC,YAAY,CAAC,AAAC;gBAChD,IAAIR,CAAC,EAAE;oBACL,MAAMF,MAAM,GAAGE,CAAC,CAACS,KAAK,CAAC,GAAG,CAAC,AAAC;oBAC5BR,QAAQ,CAAC,IAAI,EAAEJ,KAAK,CAACa,MAAM,CAACZ,MAAM,CAAC,CAAC,CAAC;oBACrCQ,CAAC,CAACK,cAAc,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;YACDC,QAAQ;YACRf,KAAK,EAAEA,KAAK;YACZI,QAAQ,EAAEA,QAAQ;YAClBY,OAAO,EAAE,EAAE;YACXC,QAAQ;YACRC,WAAW;YACXC,WAAW,EAAE,CAACC,MAAM,iBAClB,KAACvB,SAAS;oBACP,GAAGuB,MAAM;oBACVd,KAAK,EAAC,QAAQ;oBACde,WAAW,EAAC,QAAQ;oBACpBC,UAAU,EAAC,2CAA2C;kBACtD,AACH;UACD;MACE,CACN;AACJ,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAA8C;IAC3EC,kBAAkB,EAAE,OAAOC,IAAI,GAAK;YACnBA,GAAW;QAA1B,MAAMxB,MAAM,GAAGwB,CAAAA,GAAW,GAAXA,IAAI,CAACxB,MAAM,cAAXwB,GAAW,WAAK,GAAhBA,KAAAA,CAAgB,GAAhBA,GAAW,CAAEvB,GAAG,CAAC,CAACC,CAAC,GAAK;YACrC,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;gBACzB,OAAO;oBAAEG,KAAK,EAAEH,CAAC;oBAAEH,KAAK,EAAEG,CAAC;iBAAE,CAAC;YAChC,CAAC;YACD,OAAOA,CAAC,CAAC;QACX,CAAC,CAAC,AAAC;QACH,OAAO;YACLuB,IAAI,EAAEzB,MAAM;SACb,CAAC;IACJ,CAAC;IACD0B,SAAS,EAAE,IAAM;QACf,OAAO;YAAEC,SAAS,EAAE,EAAE;SAAE,CAAC;IAC3B,CAAC;IACDC,sBAAsB,EAAE/B,8BAA8B;IACtDgC,oBAAoB,EAAE,IAAO,CAAA;YAAE7B,MAAM,EAAE,EAAE;SAAE,CAAA,AAAC;CAC7C,CAAC"}
1
+ {"version":3,"sources":["../../src/plugins/variable.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 { VariablePlugin, VariableOption, OptionsEditorProps } from '@perses-dev/plugin-system';\nimport { Autocomplete, TextField } from '@mui/material';\n\ntype StaticListOption = string | VariableOption;\n\ntype StaticListVariableOptions = {\n values: StaticListOption[];\n};\n\nfunction StaticListVariableOptionEditor(props: OptionsEditorProps<StaticListVariableOptions>) {\n const value = props.value.values.map((v) => {\n if (typeof v === 'string') {\n return v;\n } else {\n return v.value;\n }\n });\n\n const onChange = (__: unknown, value: string[]) => {\n props.onChange({\n values: value.map((v) => {\n return { value: v, label: v };\n }),\n });\n };\n\n return (\n <div>\n <Autocomplete\n onPaste={(e) => {\n // Append new values on paste\n const v = e.clipboardData.getData('text/plain');\n if (v) {\n const values = v.split(',');\n onChange(null, value.concat(values));\n e.preventDefault();\n }\n }}\n multiple\n value={value}\n onChange={onChange}\n options={[]}\n freeSolo\n clearOnBlur\n readOnly={props.isReadonly}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Values\"\n placeholder=\"Values\"\n helperText='Type new value then press \"Enter\" to add.'\n />\n )}\n />\n </div>\n );\n}\n\nexport const StaticListVariable: VariablePlugin<StaticListVariableOptions> = {\n getVariableOptions: async (spec) => {\n const values = spec.values?.map((v) => {\n if (typeof v === 'string') {\n return { label: v, value: v };\n }\n return v;\n });\n return {\n data: values,\n };\n },\n dependsOn: () => {\n return { variables: [] };\n },\n OptionsEditorComponent: StaticListVariableOptionEditor,\n createInitialOptions: () => ({ values: [] }),\n};\n"],"names":["Autocomplete","TextField","StaticListVariableOptionEditor","props","value","values","map","v","onChange","__","label","div","onPaste","e","clipboardData","getData","split","concat","preventDefault","multiple","options","freeSolo","clearOnBlur","readOnly","isReadonly","renderInput","params","placeholder","helperText","StaticListVariable","getVariableOptions","spec","data","dependsOn","variables","OptionsEditorComponent","createInitialOptions"],"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,YAAY,EAAEC,SAAS,QAAQ,eAAe,CAAC;AAQxD,SAASC,8BAA8B,CAACC,KAAoD,EAAE;IAC5F,MAAMC,KAAK,GAAGD,KAAK,CAACC,KAAK,CAACC,MAAM,CAACC,GAAG,CAAC,CAACC,CAAC,GAAK;QAC1C,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;YACzB,OAAOA,CAAC,CAAC;QACX,OAAO;YACL,OAAOA,CAAC,CAACH,KAAK,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,AAAC;IAEH,MAAMI,QAAQ,GAAG,CAACC,EAAW,EAAEL,KAAe,GAAK;QACjDD,KAAK,CAACK,QAAQ,CAAC;YACbH,MAAM,EAAED,KAAK,CAACE,GAAG,CAAC,CAACC,CAAC,GAAK;gBACvB,OAAO;oBAAEH,KAAK,EAAEG,CAAC;oBAAEG,KAAK,EAAEH,CAAC;iBAAE,CAAC;YAChC,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC,AAAC;IAEF,qBACE,KAACI,KAAG;kBACF,cAAA,KAACX,YAAY;YACXY,OAAO,EAAE,CAACC,CAAC,GAAK;gBACd,6BAA6B;gBAC7B,MAAMN,CAAC,GAAGM,CAAC,CAACC,aAAa,CAACC,OAAO,CAAC,YAAY,CAAC,AAAC;gBAChD,IAAIR,CAAC,EAAE;oBACL,MAAMF,MAAM,GAAGE,CAAC,CAACS,KAAK,CAAC,GAAG,CAAC,AAAC;oBAC5BR,QAAQ,CAAC,IAAI,EAAEJ,KAAK,CAACa,MAAM,CAACZ,MAAM,CAAC,CAAC,CAAC;oBACrCQ,CAAC,CAACK,cAAc,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC;YACDC,QAAQ;YACRf,KAAK,EAAEA,KAAK;YACZI,QAAQ,EAAEA,QAAQ;YAClBY,OAAO,EAAE,EAAE;YACXC,QAAQ;YACRC,WAAW;YACXC,QAAQ,EAAEpB,KAAK,CAACqB,UAAU;YAC1BC,WAAW,EAAE,CAACC,MAAM,iBAClB,KAACzB,SAAS;oBACP,GAAGyB,MAAM;oBACVhB,KAAK,EAAC,QAAQ;oBACdiB,WAAW,EAAC,QAAQ;oBACpBC,UAAU,EAAC,2CAA2C;kBACtD,AACH;UACD;MACE,CACN;AACJ,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAA8C;IAC3EC,kBAAkB,EAAE,OAAOC,IAAI,GAAK;YACnBA,GAAW;QAA1B,MAAM1B,MAAM,GAAG0B,CAAAA,GAAW,GAAXA,IAAI,CAAC1B,MAAM,cAAX0B,GAAW,WAAK,GAAhBA,KAAAA,CAAgB,GAAhBA,GAAW,CAAEzB,GAAG,CAAC,CAACC,CAAC,GAAK;YACrC,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;gBACzB,OAAO;oBAAEG,KAAK,EAAEH,CAAC;oBAAEH,KAAK,EAAEG,CAAC;iBAAE,CAAC;YAChC,CAAC;YACD,OAAOA,CAAC,CAAC;QACX,CAAC,CAAC,AAAC;QACH,OAAO;YACLyB,IAAI,EAAE3B,MAAM;SACb,CAAC;IACJ,CAAC;IACD4B,SAAS,EAAE,IAAM;QACf,OAAO;YAAEC,SAAS,EAAE,EAAE;SAAE,CAAC;IAC3B,CAAC;IACDC,sBAAsB,EAAEjC,8BAA8B;IACtDkC,oBAAoB,EAAE,IAAO,CAAA;YAAE/B,MAAM,EAAE,EAAE;SAAE,CAAA,AAAC;CAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perses-dev/prometheus-plugin",
3
- "version": "0.37.1",
3
+ "version": "0.38.0",
4
4
  "description": "Prometheus plugin for Perses",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/perses/perses/blob/main/README.md",
@@ -31,9 +31,9 @@
31
31
  "dependencies": {
32
32
  "@lezer/highlight": "^1.0.0",
33
33
  "@lezer/lr": "^1.2.0",
34
- "@perses-dev/components": "0.37.1",
35
- "@perses-dev/core": "0.37.1",
36
- "@perses-dev/plugin-system": "0.37.1",
34
+ "@perses-dev/components": "0.38.0",
35
+ "@perses-dev/core": "0.38.0",
36
+ "@perses-dev/plugin-system": "0.38.0",
37
37
  "@prometheus-io/codemirror-promql": "^0.43.0",
38
38
  "@uiw/react-codemirror": "^4.19.1",
39
39
  "date-fns": "^2.28.0",