@grafana/plugin-ui 0.10.9 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +1799 -1325
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +94 -46
- package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +42 -38
- package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/Auth.js +19 -14
- package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +19 -15
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +52 -49
- package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +59 -55
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +20 -17
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +28 -28
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +2 -2
- package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +84 -82
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +10 -7
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +8 -2
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/utils.js +2 -1
- package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +14 -11
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +2 -2
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +2 -2
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +19 -11
- package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +24 -19
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/DataSourceDescription.js +12 -2
- package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
- package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +24 -20
- package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +69 -60
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLink.js +104 -89
- package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLinks.js +48 -41
- package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +9 -4
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +6 -5
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +19 -15
- package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
- package/dist/esm/components/DebounceInput/DebounceInput.js +6 -5
- package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
- package/dist/esm/components/Plugins/PluginSignatureBadge.js +3 -2
- package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
- package/dist/esm/components/QueryEditor/AccessoryButton.js +2 -2
- package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js +54 -0
- package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -0
- package/dist/esm/components/QueryEditor/ConfirmModal.js +18 -8
- package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js +3 -2
- package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorField.js +11 -3
- package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorFieldGroup.js +2 -2
- package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
- package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorList.js +11 -7
- package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRow.js +2 -2
- package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
- package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorStack.js +2 -2
- package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorSwitch.js +3 -2
- package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
- package/dist/esm/components/QueryEditor/FlexItem.js +2 -2
- package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
- package/dist/esm/components/QueryEditor/InlineSelect.js +12 -4
- package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
- package/dist/esm/components/QueryEditor/InputGroup.js +3 -2
- package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryEditor.js +44 -37
- package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryHeader.js +172 -95
- package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/RunQueryButton.js +13 -9
- package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
- package/dist/esm/components/QueryEditor/SchemaSelector.js +56 -0
- package/dist/esm/components/QueryEditor/SchemaSelector.js.map +1 -0
- package/dist/esm/components/QueryEditor/Space.js +2 -2
- package/dist/esm/components/QueryEditor/Space.js.map +1 -1
- package/dist/esm/components/QueryEditor/TableSelector.js +21 -7
- package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +6 -5
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +26 -18
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +19 -2
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +42 -38
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/types.js +1 -0
- package/dist/esm/components/QueryEditor/types.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +8 -8
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +11 -3
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +16 -12
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +29 -20
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +7 -4
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +4 -4
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +52 -44
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +11 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +4 -3
- package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +6 -2
- package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
- package/dist/esm/components/SQLEditor/components/SQLEditor.js +40 -34
- package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +16 -0
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -0
- package/dist/esm/components/SQLEditor/standardSql/definition.js +1 -0
- package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
- package/dist/esm/components/Segment/Segment.js +4 -3
- package/dist/esm/components/Segment/Segment.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +105 -99
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +28 -27
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +31 -26
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +70 -55
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +11 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +75 -62
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +39 -28
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +38 -31
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +15 -14
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +35 -31
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +12 -9
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +6 -2
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +20 -12
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
- package/dist/esm/index.d.ts +94 -46
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
1
2
|
import { css } from '@emotion/css';
|
|
2
|
-
import
|
|
3
|
+
import 'react';
|
|
3
4
|
import { toOption } from '@grafana/data';
|
|
4
5
|
import { AutoSizeInput, Checkbox, useStyles2, Button, Select } from '@grafana/ui';
|
|
5
6
|
import '../../QueryEditor/types.js';
|
|
@@ -40,7 +41,7 @@ function getOperationParamEditor(paramDef) {
|
|
|
40
41
|
}
|
|
41
42
|
function SimpleInputParamEditor(props) {
|
|
42
43
|
var _a;
|
|
43
|
-
return /* @__PURE__ */
|
|
44
|
+
return /* @__PURE__ */ jsx(
|
|
44
45
|
AutoSizeInput,
|
|
45
46
|
{
|
|
46
47
|
id: getOperationParamId(props.operationId, props.index),
|
|
@@ -59,7 +60,7 @@ function SimpleInputParamEditor(props) {
|
|
|
59
60
|
);
|
|
60
61
|
}
|
|
61
62
|
function BoolInputParamEditor(props) {
|
|
62
|
-
return /* @__PURE__ */
|
|
63
|
+
return /* @__PURE__ */ jsx(
|
|
63
64
|
Checkbox,
|
|
64
65
|
{
|
|
65
66
|
id: getOperationParamId(props.operationId, props.index),
|
|
@@ -86,41 +87,44 @@ function SelectInputParamEditor({
|
|
|
86
87
|
}
|
|
87
88
|
let valueOption = (_b = selectOptions.find((x) => x.value === value)) != null ? _b : toOption(value);
|
|
88
89
|
if (!value && paramDef.optional) {
|
|
89
|
-
return /* @__PURE__ */
|
|
90
|
+
return /* @__PURE__ */ jsx("div", { className: styles.optionalParam, children: /* @__PURE__ */ jsx(
|
|
90
91
|
Button,
|
|
91
92
|
{
|
|
92
93
|
size: "sm",
|
|
93
94
|
variant: "secondary",
|
|
94
95
|
title: `Add ${paramDef.name}`,
|
|
95
96
|
icon: "plus",
|
|
96
|
-
onClick: () => onChange(index, selectOptions[0].value)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
));
|
|
97
|
+
onClick: () => onChange(index, selectOptions[0].value),
|
|
98
|
+
children: paramDef.name
|
|
99
|
+
}
|
|
100
|
+
) });
|
|
100
101
|
}
|
|
101
|
-
return /* @__PURE__ */
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
102
|
+
return /* @__PURE__ */ jsxs(EditorStack, { gap: 0.5, direction: "row", alignItems: "center", children: [
|
|
103
|
+
/* @__PURE__ */ jsx(
|
|
104
|
+
Select,
|
|
105
|
+
{
|
|
106
|
+
id: getOperationParamId(operationId, index),
|
|
107
|
+
value: valueOption,
|
|
108
|
+
options: selectOptions,
|
|
109
|
+
placeholder: paramDef.placeholder,
|
|
110
|
+
allowCustomValue: true,
|
|
111
|
+
onChange: (value2) => onChange(index, value2.value),
|
|
112
|
+
width: paramDef.minWidth || "auto"
|
|
113
|
+
}
|
|
114
|
+
),
|
|
115
|
+
paramDef.optional && /* @__PURE__ */ jsx(
|
|
116
|
+
Button,
|
|
117
|
+
{
|
|
118
|
+
"data-testid": `operations.${index}.remove-param`,
|
|
119
|
+
size: "sm",
|
|
120
|
+
fill: "text",
|
|
121
|
+
icon: "times",
|
|
122
|
+
variant: "secondary",
|
|
123
|
+
title: `Remove ${paramDef.name}`,
|
|
124
|
+
onClick: () => onChange(index, "")
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
] });
|
|
124
128
|
}
|
|
125
129
|
const getStyles = (theme) => {
|
|
126
130
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationParamEditor.js","sources":["../../../../../src/components/VisualQueryBuilder/components/OperationParamEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport
|
|
1
|
+
{"version":3,"file":"OperationParamEditor.js","sources":["../../../../../src/components/VisualQueryBuilder/components/OperationParamEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { type FunctionComponent } from 'react';\n\nimport { type GrafanaTheme2, type SelectableValue, toOption } from '@grafana/data';\nimport { AutoSizeInput, Button, Checkbox, Select, useStyles2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperationParamDef, type QueryBuilderOperationParamEditorProps } from '../types';\n\nimport { EditorStack } from '../../QueryEditor';\n\nexport function getOperationParamEditor(\n paramDef: QueryBuilderOperationParamDef\n): FunctionComponent<QueryBuilderOperationParamEditorProps> {\n if (paramDef.editor) {\n return paramDef.editor;\n }\n\n if (paramDef.options) {\n return SelectInputParamEditor;\n }\n\n switch (paramDef.type) {\n case 'boolean':\n return BoolInputParamEditor;\n case 'number':\n case 'string':\n default:\n return SimpleInputParamEditor;\n }\n}\n\nfunction SimpleInputParamEditor(props: QueryBuilderOperationParamEditorProps) {\n return (\n <AutoSizeInput\n id={getOperationParamId(props.operationId, props.index)}\n defaultValue={props.value?.toString()}\n minWidth={props.paramDef.minWidth}\n placeholder={props.paramDef.placeholder}\n title={props.paramDef.description}\n maxWidth={(props.paramDef.minWidth || 20) * 3}\n onCommitChange={(evt) => {\n props.onChange(props.index, evt.currentTarget.value);\n if (props.paramDef.runQueryOnEnter && evt.type === 'keydown') {\n props.onRunQuery();\n }\n }}\n />\n );\n}\n\nfunction BoolInputParamEditor(props: QueryBuilderOperationParamEditorProps) {\n return (\n <Checkbox\n id={getOperationParamId(props.operationId, props.index)}\n value={Boolean(props.value)}\n onChange={(evt) => props.onChange(props.index, evt.currentTarget.checked)}\n />\n );\n}\n\nfunction SelectInputParamEditor({\n paramDef,\n value,\n index,\n operationId,\n onChange,\n}: QueryBuilderOperationParamEditorProps) {\n const styles = useStyles2(getStyles);\n let selectOptions = paramDef.options as SelectableValue[];\n\n if (!selectOptions[0]?.label) {\n selectOptions = paramDef.options!.map((option) => ({\n label: option.toString(),\n value: option,\n }));\n }\n\n let valueOption = selectOptions.find((x) => x.value === value) ?? toOption(value as string);\n\n // If we have optional options param and don't have value, we want to render button with which we add optional options.\n // This makes it easier to understand what needs to be selected and what is optional.\n if (!value && paramDef.optional) {\n return (\n <div className={styles.optionalParam}>\n <Button\n size=\"sm\"\n variant=\"secondary\"\n title={`Add ${paramDef.name}`}\n icon=\"plus\"\n onClick={() => onChange(index, selectOptions[0].value)}\n >\n {paramDef.name}\n </Button>\n </div>\n );\n }\n\n return (\n <EditorStack gap={0.5} direction=\"row\" alignItems=\"center\">\n <Select\n id={getOperationParamId(operationId, index)}\n value={valueOption}\n options={selectOptions}\n placeholder={paramDef.placeholder}\n allowCustomValue={true}\n onChange={(value) => onChange(index, value.value!)}\n width={paramDef.minWidth || 'auto'}\n />\n {paramDef.optional && (\n <Button\n data-testid={`operations.${index}.remove-param`}\n size=\"sm\"\n fill=\"text\"\n icon=\"times\"\n variant=\"secondary\"\n title={`Remove ${paramDef.name}`}\n onClick={() => onChange(index, '')}\n />\n )}\n </EditorStack>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n optionalParam: css({\n marginTop: theme.spacing(1),\n }),\n };\n};\n\nexport function getOperationParamId(operationId: string, paramIndex: number) {\n return `operations.${operationId}.param.${paramIndex}`;\n}\n"],"names":["value"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
1
2
|
import { css } from '@emotion/css';
|
|
2
|
-
import React__default from 'react';
|
|
3
3
|
import '@grafana/data';
|
|
4
4
|
import { useStyles2 } from '@grafana/ui';
|
|
5
|
+
import 'react';
|
|
5
6
|
import '../../QueryEditor/types.js';
|
|
6
7
|
import 'lodash';
|
|
7
8
|
import '../../QueryEditor/EditorList.js';
|
|
@@ -24,7 +25,7 @@ import 'rxjs/operators';
|
|
|
24
25
|
|
|
25
26
|
function OperationsEditorRow({ children }) {
|
|
26
27
|
const styles = useStyles2(getStyles);
|
|
27
|
-
return /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ jsx("div", { className: styles.root, children: /* @__PURE__ */ jsx(EditorStack, { gap: 1, children }) });
|
|
28
29
|
}
|
|
29
30
|
const getStyles = (theme) => {
|
|
30
31
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationsEditorRow.js","sources":["../../../../../src/components/VisualQueryBuilder/components/OperationsEditorRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\
|
|
1
|
+
{"version":3,"file":"OperationsEditorRow.js","sources":["../../../../../src/components/VisualQueryBuilder/components/OperationsEditorRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { EditorStack } from '../../QueryEditor';\n\nexport function OperationsEditorRow({ children }: React.PropsWithChildren<{}>) {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <EditorStack gap={1}>{children}</EditorStack>\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1, 1, 0, 1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAOgB,SAAA,mBAAA,CAAoB,EAAE,QAAA,EAAyC,EAAA;AAC7E,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EACE,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EACrB,8BAAC,WAAY,EAAA,EAAA,GAAA,EAAK,CAAI,EAAA,QAAA,EAAS,CACjC,EAAA,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,EAAO,OAAA;AAAA,IACL,MAAM,GAAI,CAAA;AAAA,MACR,SAAS,KAAM,CAAA,OAAA,CAAQ,CAAG,EAAA,CAAA,EAAG,GAAG,CAAC,CAAA;AAAA,MACjC,eAAA,EAAiB,KAAM,CAAA,MAAA,CAAO,UAAW,CAAA,SAAA;AAAA,MACzC,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA;AAAA,KAClC;AAAA,GACH;AACF,CAAA;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
1
2
|
import { css } from '@emotion/css';
|
|
2
|
-
import
|
|
3
|
+
import { useMemo } from 'react';
|
|
3
4
|
import '@grafana/data';
|
|
4
5
|
import { reportInteraction } from '@grafana/runtime';
|
|
5
6
|
import { useStyles2, Tooltip, Button } from '@grafana/ui';
|
|
@@ -24,9 +25,9 @@ const QueryBuilderHints = ({
|
|
|
24
25
|
});
|
|
25
26
|
return hints2 != null ? hints2 : [];
|
|
26
27
|
}, [datasource, visualQuery, data, queryModeller, buildDataQueryFromQueryString]);
|
|
27
|
-
return /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ jsx(Fragment, { children: hints.length > 0 && /* @__PURE__ */ jsx("div", { className: styles.container, children: hints.map((hint) => {
|
|
28
29
|
var _a, _b, _c, _d;
|
|
29
|
-
return /* @__PURE__ */
|
|
30
|
+
return /* @__PURE__ */ jsx(Tooltip, { content: `${hint.label} ${(_a = hint.fix) == null ? undefined : _a.label}`, children: /* @__PURE__ */ jsxs(
|
|
30
31
|
Button,
|
|
31
32
|
{
|
|
32
33
|
onClick: () => {
|
|
@@ -48,12 +49,14 @@ const QueryBuilderHints = ({
|
|
|
48
49
|
},
|
|
49
50
|
fill: "outline",
|
|
50
51
|
size: "sm",
|
|
51
|
-
className: styles.hint
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
className: styles.hint,
|
|
53
|
+
children: [
|
|
54
|
+
"hint: ",
|
|
55
|
+
((_b = hint.fix) == null ? undefined : _b.title) || ((_d = (_c = hint.fix) == null ? undefined : _c.action) == null ? undefined : _d.type.toLowerCase().replace("_", " "))
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
) }, hint.type);
|
|
59
|
+
}) }) });
|
|
57
60
|
};
|
|
58
61
|
QueryBuilderHints.displayName = "QueryBuilderHints";
|
|
59
62
|
const getStyles = (theme) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilderHints.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryBuilderHints.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport
|
|
1
|
+
{"version":3,"file":"QueryBuilderHints.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryBuilderHints.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo } from 'react';\n\nimport { type DataSourceApi, type GrafanaTheme2, type PanelData, type DataQuery } from '@grafana/data';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Button, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type VisualQuery, type VisualQueryModeller } from '../types';\n\ninterface Props<TVisualQuery extends VisualQuery, TDataQuery extends DataQuery> {\n query: TVisualQuery;\n datasource: DataSourceApi<TDataQuery>;\n queryModeller: VisualQueryModeller;\n buildVisualQueryFromString: (queryString: string) => { query: TVisualQuery };\n buildDataQueryFromQueryString: (queryString: string) => TDataQuery;\n buildQueryStringFromDataQuery: (dataQuery: TDataQuery) => string;\n onChange: (update: TVisualQuery) => void;\n data?: PanelData;\n}\n\nexport const QueryBuilderHints = <TVisualQuery extends VisualQuery, TDataQuery extends DataQuery>({\n datasource,\n query: visualQuery,\n onChange,\n data,\n queryModeller,\n buildVisualQueryFromString,\n buildDataQueryFromQueryString,\n buildQueryStringFromDataQuery,\n}: Props<TVisualQuery, TDataQuery>) => {\n const styles = useStyles2(getStyles);\n\n const hints = useMemo(() => {\n const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n // For now show only actionable hints\n const hints = datasource.getQueryHints?.(dataQuery, data?.series || []).filter((hint) => hint.fix?.action);\n return hints ?? [];\n }, [datasource, visualQuery, data, queryModeller, buildDataQueryFromQueryString]);\n\n return (\n <>\n {hints.length > 0 && (\n <div className={styles.container}>\n {hints.map((hint) => {\n return (\n <Tooltip content={`${hint.label} ${hint.fix?.label}`} key={hint.type}>\n <Button\n onClick={() => {\n reportInteraction('grafana_query_builder_hints_clicked', {\n hint: hint.type,\n datasourceType: datasource.type,\n });\n\n if (hint?.fix?.action) {\n const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n const newQuery = datasource.modifyQuery?.(dataQuery, hint.fix.action);\n if (newQuery) {\n const newVisualQuery = buildVisualQueryFromString(\n buildQueryStringFromDataQuery(newQuery) ?? ''\n );\n return onChange(newVisualQuery.query);\n }\n }\n }}\n fill=\"outline\"\n size=\"sm\"\n className={styles.hint}\n >\n hint: {hint.fix?.title || hint.fix?.action?.type.toLowerCase().replace('_', ' ')}\n </Button>\n </Tooltip>\n );\n })}\n </div>\n )}\n </>\n );\n};\n\nQueryBuilderHints.displayName = 'QueryBuilderHints';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n container: css`\n display: flex;\n align-items: start;\n `,\n hint: css`\n margin-right: ${theme.spacing(1)};\n `,\n };\n};\n"],"names":["hints","_a","_b","_c"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { RadioButtonGroup } from '@grafana/ui';
|
|
3
3
|
import { QueryEditorMode } from '../types.js';
|
|
4
4
|
|
|
@@ -7,7 +7,7 @@ const editorModes = [
|
|
|
7
7
|
{ label: "Code", value: QueryEditorMode.Code }
|
|
8
8
|
];
|
|
9
9
|
function QueryEditorModeToggle({ mode, onChange }) {
|
|
10
|
-
return /* @__PURE__ */
|
|
10
|
+
return /* @__PURE__ */ jsx("div", { "data-testid": "QueryEditorModeToggle", children: /* @__PURE__ */ jsx(RadioButtonGroup, { options: editorModes, size: "sm", value: mode, onChange }) });
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export { QueryEditorModeToggle };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryEditorModeToggle.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryEditorModeToggle.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"QueryEditorModeToggle.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryEditorModeToggle.tsx"],"sourcesContent":["import { RadioButtonGroup } from '@grafana/ui';\n\nimport { QueryEditorMode } from '../types';\n\ninterface Props {\n mode: QueryEditorMode;\n onChange: (mode: QueryEditorMode) => void;\n}\n\nconst editorModes = [\n { label: 'Builder', value: QueryEditorMode.Builder },\n { label: 'Code', value: QueryEditorMode.Code },\n];\n\nexport function QueryEditorModeToggle({ mode, onChange }: Props) {\n return (\n <div data-testid={'QueryEditorModeToggle'}>\n <RadioButtonGroup options={editorModes} size=\"sm\" value={mode} onChange={onChange} />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AASA,MAAM,WAAc,GAAA;AAAA,EAClB,EAAE,KAAA,EAAO,SAAW,EAAA,KAAA,EAAO,gBAAgB,OAAQ,EAAA;AAAA,EACnD,EAAE,KAAA,EAAO,MAAQ,EAAA,KAAA,EAAO,gBAAgB,IAAK;AAC/C,CAAA;AAEO,SAAS,qBAAsB,CAAA,EAAE,IAAM,EAAA,QAAA,EAAmB,EAAA;AAC/D,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA,EAAI,aAAa,EAAA,uBAAA,EAChB,QAAC,kBAAA,GAAA,CAAA,gBAAA,EAAA,EAAiB,OAAS,EAAA,WAAA,EAAa,IAAK,EAAA,IAAA,EAAK,KAAO,EAAA,IAAA,EAAM,UAAoB,CACrF,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
1
2
|
import { css } from '@emotion/css';
|
|
2
3
|
import { uniqueId } from 'lodash';
|
|
3
|
-
import
|
|
4
|
+
import { useRef } from 'react';
|
|
4
5
|
import '@grafana/data';
|
|
5
6
|
import { useStyles2, Switch } from '@grafana/ui';
|
|
6
7
|
import '../../QueryEditor/types.js';
|
|
@@ -26,7 +27,10 @@ function QueryHeaderSwitch({ label, ...inputProps }) {
|
|
|
26
27
|
const dashedLabel = label.replace(" ", "-");
|
|
27
28
|
const switchIdRef = useRef(uniqueId(`switch-${dashedLabel}`));
|
|
28
29
|
const styles = useStyles2(getStyles);
|
|
29
|
-
return /* @__PURE__ */
|
|
30
|
+
return /* @__PURE__ */ jsxs(EditorStack, { gap: 1, children: [
|
|
31
|
+
/* @__PURE__ */ jsx("label", { htmlFor: switchIdRef.current, className: styles.switchLabel, children: label }),
|
|
32
|
+
/* @__PURE__ */ jsx(Switch, { ...inputProps, id: switchIdRef.current })
|
|
33
|
+
] });
|
|
30
34
|
}
|
|
31
35
|
const getStyles = (theme) => {
|
|
32
36
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryHeaderSwitch.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryHeaderSwitch.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport
|
|
1
|
+
{"version":3,"file":"QueryHeaderSwitch.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryHeaderSwitch.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { type HTMLProps, useRef } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Switch, useStyles2 } from '@grafana/ui';\n\nimport { EditorStack } from '../../QueryEditor';\n\ninterface Props extends Omit<HTMLProps<HTMLInputElement>, 'value' | 'ref'> {\n value?: boolean;\n label: string;\n}\n\nexport function QueryHeaderSwitch({ label, ...inputProps }: Props) {\n const dashedLabel = label.replace(' ', '-');\n const switchIdRef = useRef(uniqueId(`switch-${dashedLabel}`));\n const styles = useStyles2(getStyles);\n\n return (\n <EditorStack gap={1}>\n <label htmlFor={switchIdRef.current} className={styles.switchLabel}>\n {label}\n </label>\n <Switch {...inputProps} id={switchIdRef.current} />\n </EditorStack>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n switchLabel: css({\n color: theme.colors.text.secondary,\n cursor: 'pointer',\n fontSize: theme.typography.bodySmall.fontSize,\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAcO,SAAS,iBAAkB,CAAA,EAAE,KAAO,EAAA,GAAG,YAAqB,EAAA;AACjE,EAAA,MAAM,WAAc,GAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,EAAK,GAAG,CAAA;AAC1C,EAAA,MAAM,cAAc,MAAO,CAAA,QAAA,CAAS,CAAU,OAAA,EAAA,WAAW,EAAE,CAAC,CAAA;AAC5D,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EACE,uBAAA,IAAA,CAAC,WAAY,EAAA,EAAA,GAAA,EAAK,CAChB,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAM,OAAS,EAAA,WAAA,CAAY,SAAS,SAAW,EAAA,MAAA,CAAO,aACpD,QACH,EAAA,KAAA,EAAA,CAAA;AAAA,wBACC,MAAQ,EAAA,EAAA,GAAG,UAAY,EAAA,EAAA,EAAI,YAAY,OAAS,EAAA;AAAA,GACnD,EAAA,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,EAAO,OAAA;AAAA,IACL,aAAa,GAAI,CAAA;AAAA,MACf,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,MACzB,MAAQ,EAAA,SAAA;AAAA,MACR,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,SAAU,CAAA,QAAA;AAAA,MACrC,SAAW,EAAA;AAAA,QACT,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AACF,CAAA;;;;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
1
2
|
import { css } from '@emotion/css';
|
|
2
|
-
import React__default from 'react';
|
|
3
3
|
import { useToggle } from 'react-use';
|
|
4
4
|
import { getValueFormat } from '@grafana/data';
|
|
5
5
|
import { config } from '@grafana/runtime';
|
|
6
6
|
import { useStyles2, Collapse, Tooltip, Icon } from '@grafana/ui';
|
|
7
|
+
import 'react';
|
|
7
8
|
import '../../QueryEditor/types.js';
|
|
8
9
|
import 'lodash';
|
|
9
10
|
import '../../QueryEditor/EditorList.js';
|
|
@@ -25,17 +26,24 @@ import 'rxjs/operators';
|
|
|
25
26
|
function QueryOptionGroup({ title, children, collapsedInfo, queryStats }) {
|
|
26
27
|
const [isOpen, toggleOpen] = useToggle(false);
|
|
27
28
|
const styles = useStyles2(getStyles);
|
|
28
|
-
return /* @__PURE__ */
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
return /* @__PURE__ */ jsxs("div", { className: styles.wrapper, children: [
|
|
30
|
+
/* @__PURE__ */ jsx(
|
|
31
|
+
Collapse,
|
|
32
|
+
{
|
|
33
|
+
className: styles.collapse,
|
|
34
|
+
collapsible: true,
|
|
35
|
+
isOpen,
|
|
36
|
+
onToggle: toggleOpen,
|
|
37
|
+
label: /* @__PURE__ */ jsxs(EditorStack, { gap: 0, children: [
|
|
38
|
+
/* @__PURE__ */ jsx("h6", { className: styles.title, children: title }),
|
|
39
|
+
!isOpen && /* @__PURE__ */ jsx("div", { className: styles.description, children: collapsedInfo.map((x, i) => /* @__PURE__ */ jsx("span", { children: x }, i)) })
|
|
40
|
+
] }),
|
|
41
|
+
children: /* @__PURE__ */ jsx("div", { className: styles.body, children })
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
queryStats && config.featureToggles.lokiQuerySplitting && /* @__PURE__ */ jsx(Tooltip, { content: "Note: the query will be split into multiple parts and executed in sequence. Query limits will only apply each individual part.", children: /* @__PURE__ */ jsx(Icon, { tabIndex: 0, name: "info-circle", className: styles.tooltip, size: "sm" }) }),
|
|
45
|
+
queryStats && /* @__PURE__ */ jsx("p", { className: styles.stats, children: generateQueryStats(queryStats) })
|
|
46
|
+
] });
|
|
39
47
|
}
|
|
40
48
|
const getStyles = (theme) => {
|
|
41
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryOptionGroup.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryOptionGroup.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport
|
|
1
|
+
{"version":3,"file":"QueryOptionGroup.js","sources":["../../../../../src/components/VisualQueryBuilder/components/QueryOptionGroup.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useToggle } from 'react-use';\n\nimport { getValueFormat, type GrafanaTheme2 } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { Collapse, Icon, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type QueryStats } from '../types';\nimport { EditorStack } from '../../QueryEditor';\n\ninterface Props {\n title: string;\n collapsedInfo: string[];\n queryStats?: QueryStats | null;\n}\n\nexport function QueryOptionGroup({ title, children, collapsedInfo, queryStats }: React.PropsWithChildren<Props>) {\n const [isOpen, toggleOpen] = useToggle(false);\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.wrapper}>\n <Collapse\n className={styles.collapse}\n collapsible\n isOpen={isOpen}\n onToggle={toggleOpen}\n label={\n <EditorStack gap={0}>\n <h6 className={styles.title}>{title}</h6>\n {!isOpen && (\n <div className={styles.description}>\n {collapsedInfo.map((x, i) => (\n <span key={i}>{x}</span>\n ))}\n </div>\n )}\n </EditorStack>\n }\n >\n <div className={styles.body}>{children}</div>\n </Collapse>\n {/**TODO: This is Loki logic that should eventually be moved to Loki */}\n {queryStats && config.featureToggles.lokiQuerySplitting && (\n <Tooltip content=\"Note: the query will be split into multiple parts and executed in sequence. Query limits will only apply each individual part.\">\n <Icon tabIndex={0} name=\"info-circle\" className={styles.tooltip} size=\"sm\" />\n </Tooltip>\n )}\n\n {queryStats && <p className={styles.stats}>{generateQueryStats(queryStats)}</p>}\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n collapse: css({\n backgroundColor: 'unset',\n border: 'unset',\n marginBottom: 0,\n\n ['> button']: {\n padding: theme.spacing(0, 1),\n },\n }),\n wrapper: css({\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n }),\n title: css({\n flexGrow: 1,\n overflow: 'hidden',\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n margin: 0,\n }),\n description: css({\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.bodySmall.fontWeight,\n paddingLeft: theme.spacing(2),\n gap: theme.spacing(2),\n display: 'flex',\n }),\n body: css({\n display: 'flex',\n gap: theme.spacing(2),\n flexWrap: 'wrap',\n }),\n stats: css({\n margin: '0px',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n tooltip: css({\n marginRight: theme.spacing(0.25),\n }),\n };\n};\n\nconst generateQueryStats = (queryStats: QueryStats) => {\n if (queryStats.message) {\n return queryStats.message;\n }\n\n return `This query will process approximately ${convertUnits(queryStats)}.`;\n};\n\nconst convertUnits = (queryStats: QueryStats): string => {\n const { text, suffix } = getValueFormat('bytes')(queryStats.bytes, 1);\n return text + suffix;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
1
2
|
import { cx, css } from '@emotion/css';
|
|
2
3
|
import Prism from 'prismjs';
|
|
3
|
-
import React__default from 'react';
|
|
4
4
|
import { textUtil } from '@grafana/data';
|
|
5
5
|
import { useTheme2 } from '@grafana/ui';
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ function RawQuery({ query, language, className }) {
|
|
|
8
8
|
const theme = useTheme2();
|
|
9
9
|
const styles = getStyles(theme);
|
|
10
10
|
const highlighted = Prism.highlight(query, language.grammar, language.name);
|
|
11
|
-
return /* @__PURE__ */
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
12
|
"div",
|
|
13
13
|
{
|
|
14
14
|
className: cx(styles.editorField, "prism-syntax-highlight", className),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RawQuery.js","sources":["../../../../../src/components/VisualQueryBuilder/components/RawQuery.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport Prism, { type Grammar } from 'prismjs';\
|
|
1
|
+
{"version":3,"file":"RawQuery.js","sources":["../../../../../src/components/VisualQueryBuilder/components/RawQuery.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport Prism, { type Grammar } from 'prismjs';\n\nimport { type GrafanaTheme2, textUtil } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\ninterface Props {\n query: string;\n language: {\n grammar: Grammar;\n name: string;\n };\n className?: string;\n}\nexport function RawQuery({ query, language, className }: Props) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n const highlighted = Prism.highlight(query, language.grammar, language.name);\n\n return (\n <div\n className={cx(styles.editorField, 'prism-syntax-highlight', className)}\n aria-label=\"selector\"\n dangerouslySetInnerHTML={{ __html: textUtil.sanitize(highlighted) }}\n />\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n editorField: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;AAcO,SAAS,QAAS,CAAA,EAAE,KAAO,EAAA,QAAA,EAAU,WAAoB,EAAA;AAC9D,EAAA,MAAM,QAAQ,SAAU,EAAA;AACxB,EAAM,MAAA,MAAA,GAAS,UAAU,KAAK,CAAA;AAC9B,EAAA,MAAM,cAAc,KAAM,CAAA,SAAA,CAAU,OAAO,QAAS,CAAA,OAAA,EAAS,SAAS,IAAI,CAAA;AAE1E,EACE,uBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,EAAA,CAAG,MAAO,CAAA,WAAA,EAAa,0BAA0B,SAAS,CAAA;AAAA,MACrE,YAAW,EAAA,UAAA;AAAA,MACX,yBAAyB,EAAE,MAAA,EAAQ,QAAS,CAAA,QAAA,CAAS,WAAW,CAAE;AAAA;AAAA,GACpE;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,EAAO,OAAA;AAAA,IACL,aAAa,GAAI,CAAA;AAAA,MACf,UAAA,EAAY,MAAM,UAAW,CAAA,mBAAA;AAAA,MAC7B,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,SAAU,CAAA;AAAA,KACtC;AAAA,GACH;AACF,CAAA;;;;"}
|