@grafana/plugin-ui 0.1.10
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/README.md +45 -0
- package/dist/8x/fixtures/index.js +7 -0
- package/dist/8x/fixtures/index.js.map +1 -0
- package/dist/8x/fixtures/select.js +43 -0
- package/dist/8x/fixtures/select.js.map +1 -0
- package/dist/8x/index.js +5 -0
- package/dist/8x/index.js.map +1 -0
- package/dist/components/AsyncButtonCascader/AsyncButtonCascader.js +34 -0
- package/dist/components/AsyncButtonCascader/AsyncButtonCascader.js.map +1 -0
- package/dist/components/Cascader/Cascader.js +6 -0
- package/dist/components/Cascader/Cascader.js.map +1 -0
- package/dist/components/DataLinks/DataLink.js +79 -0
- package/dist/components/DataLinks/DataLink.js.map +1 -0
- package/dist/components/DataLinks/DataLinks.js +59 -0
- package/dist/components/DataLinks/DataLinks.js.map +1 -0
- package/dist/components/DataLinks/index.js +7 -0
- package/dist/components/DataLinks/index.js.map +1 -0
- package/dist/components/DataLinks/types.js +3 -0
- package/dist/components/DataLinks/types.js.map +1 -0
- package/dist/components/DataSourcePicker/DataSourcePicker.js +90 -0
- package/dist/components/DataSourcePicker/DataSourcePicker.js.map +1 -0
- package/dist/components/DatePicker/DatePicker.js +29 -0
- package/dist/components/DatePicker/DatePicker.js.map +1 -0
- package/dist/components/DatePicker/styles.js +156 -0
- package/dist/components/DatePicker/styles.js.map +1 -0
- package/dist/components/DatePickerWithInput/DatePickerWithInput.js +19 -0
- package/dist/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -0
- package/dist/components/DatePickerWithInput/style.css +6 -0
- package/dist/components/DebounceInput/DebounceInput.js +17 -0
- package/dist/components/DebounceInput/DebounceInput.js.map +1 -0
- package/dist/components/Plugins/PluginSignatureBadge.js +65 -0
- package/dist/components/Plugins/PluginSignatureBadge.js.map +1 -0
- package/dist/components/QueryEditor/AccessoryButton.js +21 -0
- package/dist/components/QueryEditor/AccessoryButton.js.map +1 -0
- package/dist/components/QueryEditor/ConfirmModal.js +28 -0
- package/dist/components/QueryEditor/ConfirmModal.js.map +1 -0
- package/dist/components/QueryEditor/DatasetSelector.js +36 -0
- package/dist/components/QueryEditor/DatasetSelector.js.map +1 -0
- package/dist/components/QueryEditor/EditorField.js +51 -0
- package/dist/components/QueryEditor/EditorField.js.map +1 -0
- package/dist/components/QueryEditor/EditorFieldGroup.js +11 -0
- package/dist/components/QueryEditor/EditorFieldGroup.js.map +1 -0
- package/dist/components/QueryEditor/EditorHeader.js +23 -0
- package/dist/components/QueryEditor/EditorHeader.js.map +1 -0
- package/dist/components/QueryEditor/EditorList.js +28 -0
- package/dist/components/QueryEditor/EditorList.js.map +1 -0
- package/dist/components/QueryEditor/EditorRow.js +24 -0
- package/dist/components/QueryEditor/EditorRow.js.map +1 -0
- package/dist/components/QueryEditor/EditorRows.js +11 -0
- package/dist/components/QueryEditor/EditorRows.js.map +1 -0
- package/dist/components/QueryEditor/EditorSwitch.js +24 -0
- package/dist/components/QueryEditor/EditorSwitch.js.map +1 -0
- package/dist/components/QueryEditor/ErrorBoundary.js +23 -0
- package/dist/components/QueryEditor/ErrorBoundary.js.map +1 -0
- package/dist/components/QueryEditor/FlexItem.js +10 -0
- package/dist/components/QueryEditor/FlexItem.js.map +1 -0
- package/dist/components/QueryEditor/InlineSelect.js +60 -0
- package/dist/components/QueryEditor/InlineSelect.js.map +1 -0
- package/dist/components/QueryEditor/InputGroup.js +46 -0
- package/dist/components/QueryEditor/InputGroup.js.map +1 -0
- package/dist/components/QueryEditor/QueryEditor.js +73 -0
- package/dist/components/QueryEditor/QueryEditor.js.map +1 -0
- package/dist/components/QueryEditor/QueryHeader.js +92 -0
- package/dist/components/QueryEditor/QueryHeader.js.map +1 -0
- package/dist/components/QueryEditor/Space.js +36 -0
- package/dist/components/QueryEditor/Space.js.map +1 -0
- package/dist/components/QueryEditor/Stack.js +27 -0
- package/dist/components/QueryEditor/Stack.js.map +1 -0
- package/dist/components/QueryEditor/TableSelector.js +20 -0
- package/dist/components/QueryEditor/TableSelector.js.map +1 -0
- package/dist/components/QueryEditor/defaults.js +20 -0
- package/dist/components/QueryEditor/defaults.js.map +1 -0
- package/dist/components/QueryEditor/expressions.js +18 -0
- package/dist/components/QueryEditor/expressions.js.map +1 -0
- package/dist/components/QueryEditor/index.js +35 -0
- package/dist/components/QueryEditor/index.js.map +1 -0
- package/dist/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +21 -0
- package/dist/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -0
- package/dist/components/QueryEditor/query-editor-raw/QueryToolbox.js +59 -0
- package/dist/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -0
- package/dist/components/QueryEditor/query-editor-raw/QueryValidator.js +79 -0
- package/dist/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -0
- package/dist/components/QueryEditor/query-editor-raw/RawEditor.js +60 -0
- package/dist/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -0
- package/dist/components/QueryEditor/types.js +21 -0
- package/dist/components/QueryEditor/types.js.map +1 -0
- package/dist/components/QueryEditor/utils/formatSQL.js +13 -0
- package/dist/components/QueryEditor/utils/formatSQL.js.map +1 -0
- package/dist/components/QueryEditor/utils/sql.utils.js +94 -0
- package/dist/components/QueryEditor/utils/sql.utils.js.map +1 -0
- package/dist/components/QueryEditor/utils/useSqlChange.js +16 -0
- package/dist/components/QueryEditor/utils/useSqlChange.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +109 -0
- package/dist/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/EditorField.js +51 -0
- package/dist/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/EditorRow.js +24 -0
- package/dist/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/EditorRows.js +11 -0
- package/dist/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/GroupByRow.js +33 -0
- package/dist/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/OrderByRow.js +50 -0
- package/dist/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/Preview.js +28 -0
- package/dist/components/QueryEditor/visual-query-builder/Preview.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +13 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +34 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLSelectRow.js +19 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLWhereRow.js +35 -0
- package/dist/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/SelectRow.js +68 -0
- package/dist/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/Stack.js +27 -0
- package/dist/components/QueryEditor/visual-query-builder/Stack.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/VisualEditor.js +38 -0
- package/dist/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/WhereRow.js +67 -0
- package/dist/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -0
- package/dist/components/QueryEditor/visual-query-builder/index.js +6 -0
- package/dist/components/QueryEditor/visual-query-builder/index.js.map +1 -0
- package/dist/components/QueryEditorRow/QueryEditorRow.js +17 -0
- package/dist/components/QueryEditorRow/QueryEditorRow.js.map +1 -0
- package/dist/components/Segment/Segment.js +18 -0
- package/dist/components/Segment/Segment.js.map +1 -0
- package/dist/components/index.js +25 -0
- package/dist/components/index.js.map +1 -0
- package/dist/datasource/SqlDatasource.js +161 -0
- package/dist/datasource/SqlDatasource.js.map +1 -0
- package/dist/datasource/constants.js +19 -0
- package/dist/datasource/constants.js.map +1 -0
- package/dist/hooks/useDebounce.js +19 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/src/8x/fixtures/index.d.ts +1 -0
- package/dist/src/8x/fixtures/select.d.ts +11 -0
- package/dist/src/8x/index.d.ts +1 -0
- package/dist/src/components/AsyncButtonCascader/AsyncButtonCascader.d.ts +18 -0
- package/dist/src/components/Cascader/Cascader.d.ts +1 -0
- package/dist/src/components/DataLinks/DataLink.d.ts +13 -0
- package/dist/src/components/DataLinks/DataLinks.d.ts +8 -0
- package/dist/src/components/DataLinks/index.d.ts +3 -0
- package/dist/src/components/DataLinks/types.d.ts +7 -0
- package/dist/src/components/DataSourcePicker/DataSourcePicker.d.ts +34 -0
- package/dist/src/components/DatePicker/DatePicker.d.ts +8 -0
- package/dist/src/components/DatePicker/styles.d.ts +11 -0
- package/dist/src/components/DatePickerWithInput/DatePickerWithInput.d.ts +9 -0
- package/dist/src/components/DebounceInput/DebounceInput.d.ts +8 -0
- package/dist/src/components/Plugins/PluginSignatureBadge.d.ts +9 -0
- package/dist/src/components/QueryEditor/AccessoryButton.d.ts +6 -0
- package/dist/src/components/QueryEditor/ConfirmModal.d.ts +9 -0
- package/dist/src/components/QueryEditor/DatasetSelector.d.ts +12 -0
- package/dist/src/components/QueryEditor/EditorField.d.ts +11 -0
- package/dist/src/components/QueryEditor/EditorFieldGroup.d.ts +5 -0
- package/dist/src/components/QueryEditor/EditorHeader.d.ts +5 -0
- package/dist/src/components/QueryEditor/EditorList.d.ts +8 -0
- package/dist/src/components/QueryEditor/EditorRow.d.ts +5 -0
- package/dist/src/components/QueryEditor/EditorRows.d.ts +5 -0
- package/dist/src/components/QueryEditor/EditorSwitch.d.ts +3 -0
- package/dist/src/components/QueryEditor/ErrorBoundary.d.ts +14 -0
- package/dist/src/components/QueryEditor/FlexItem.d.ts +7 -0
- package/dist/src/components/QueryEditor/InlineSelect.d.ts +7 -0
- package/dist/src/components/QueryEditor/InputGroup.d.ts +5 -0
- package/dist/src/components/QueryEditor/QueryEditor.d.ts +7 -0
- package/dist/src/components/QueryEditor/QueryHeader.d.ts +15 -0
- package/dist/src/components/QueryEditor/Space.d.ts +14 -0
- package/dist/src/components/QueryEditor/Stack.d.ts +9 -0
- package/dist/src/components/QueryEditor/TableSelector.d.ts +12 -0
- package/dist/src/components/QueryEditor/defaults.d.ts +3 -0
- package/dist/src/components/QueryEditor/expressions.d.ts +50 -0
- package/dist/src/components/QueryEditor/index.d.ts +16 -0
- package/dist/src/components/QueryEditor/query-editor-raw/QueryEditorRaw.d.ts +15 -0
- package/dist/src/components/QueryEditor/query-editor-raw/QueryToolbox.d.ts +11 -0
- package/dist/src/components/QueryEditor/query-editor-raw/QueryValidator.d.ts +10 -0
- package/dist/src/components/QueryEditor/query-editor-raw/RawEditor.d.ts +10 -0
- package/dist/src/components/QueryEditor/types.d.ts +149 -0
- package/dist/src/components/QueryEditor/utils/formatSQL.d.ts +1 -0
- package/dist/src/components/QueryEditor/utils/sql.utils.d.ts +13 -0
- package/dist/src/components/QueryEditor/utils/useSqlChange.d.ts +10 -0
- package/dist/src/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.d.ts +7 -0
- package/dist/src/components/QueryEditor/visual-query-builder/EditorField.d.ts +11 -0
- package/dist/src/components/QueryEditor/visual-query-builder/EditorRow.d.ts +5 -0
- package/dist/src/components/QueryEditor/visual-query-builder/EditorRows.d.ts +5 -0
- package/dist/src/components/QueryEditor/visual-query-builder/GroupByRow.d.ts +10 -0
- package/dist/src/components/QueryEditor/visual-query-builder/OrderByRow.d.ts +11 -0
- package/dist/src/components/QueryEditor/visual-query-builder/Preview.d.ts +6 -0
- package/dist/src/components/QueryEditor/visual-query-builder/SQLGroupByRow.d.ts +12 -0
- package/dist/src/components/QueryEditor/visual-query-builder/SQLOrderByRow.d.ts +12 -0
- package/dist/src/components/QueryEditor/visual-query-builder/SQLSelectRow.d.ts +12 -0
- package/dist/src/components/QueryEditor/visual-query-builder/SQLWhereRow.d.ts +12 -0
- package/dist/src/components/QueryEditor/visual-query-builder/SelectRow.d.ts +11 -0
- package/dist/src/components/QueryEditor/visual-query-builder/Stack.d.ts +9 -0
- package/dist/src/components/QueryEditor/visual-query-builder/VisualEditor.d.ts +14 -0
- package/dist/src/components/QueryEditor/visual-query-builder/WhereRow.d.ts +10 -0
- package/dist/src/components/QueryEditor/visual-query-builder/index.d.ts +1 -0
- package/dist/src/components/QueryEditorRow/QueryEditorRow.d.ts +8 -0
- package/dist/src/components/Segment/Segment.d.ts +8 -0
- package/dist/src/components/index.d.ts +11 -0
- package/dist/src/datasource/SqlDatasource.d.ts +64 -0
- package/dist/src/datasource/constants.d.ts +1 -0
- package/dist/src/hooks/useDebounce.d.ts +2 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/test/mocks/DataQuery.d.ts +2 -0
- package/dist/src/test/mocks/Datasource.d.ts +4 -0
- package/dist/src/test/mocks/Plugin.d.ts +10 -0
- package/dist/src/test/mocks/QueryEditorProps.d.ts +4 -0
- package/dist/src/test/mocks/TestDatasource.d.ts +6 -0
- package/dist/src/test/mocks/index.d.ts +5 -0
- package/dist/src/test/mocks/style.d.ts +1 -0
- package/dist/src/test/mocks/utils.d.ts +18 -0
- package/dist/src/test/setupTests.d.ts +1 -0
- package/dist/src/unreleasedComponents/index.d.ts +1 -0
- package/dist/src/utils/compatFeatures.d.ts +9 -0
- package/dist/src/utils/compatibility.d.ts +12 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/testDatasource.d.ts +19 -0
- package/dist/test/mocks/DataQuery.js +14 -0
- package/dist/test/mocks/DataQuery.js.map +1 -0
- package/dist/test/mocks/Datasource.js +73 -0
- package/dist/test/mocks/Datasource.js.map +1 -0
- package/dist/test/mocks/Plugin.js +114 -0
- package/dist/test/mocks/Plugin.js.map +1 -0
- package/dist/test/mocks/QueryEditorProps.js +47 -0
- package/dist/test/mocks/QueryEditorProps.js.map +1 -0
- package/dist/test/mocks/TestDatasource.js +24 -0
- package/dist/test/mocks/TestDatasource.js.map +1 -0
- package/dist/test/mocks/index.js +9 -0
- package/dist/test/mocks/index.js.map +1 -0
- package/dist/test/mocks/style.js +5 -0
- package/dist/test/mocks/style.js.map +1 -0
- package/dist/test/mocks/utils.js +48 -0
- package/dist/test/mocks/utils.js.map +1 -0
- package/dist/test/setupTests.js +17 -0
- package/dist/test/setupTests.js.map +1 -0
- package/dist/unreleasedComponents/index.js +3 -0
- package/dist/unreleasedComponents/index.js.map +1 -0
- package/dist/utils/compatFeatures.js +20 -0
- package/dist/utils/compatFeatures.js.map +1 -0
- package/dist/utils/compatibility.js +28 -0
- package/dist/utils/compatibility.js.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/testDatasource.js +30 -0
- package/dist/utils/testDatasource.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqlQueryEditor = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const react_use_1 = require("react-use");
|
|
7
|
+
const defaults_1 = require("./defaults");
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
const sql_utils_1 = require("./utils/sql.utils");
|
|
10
|
+
const QueryHeader_1 = require("./QueryHeader");
|
|
11
|
+
const RawEditor_1 = require("./query-editor-raw/RawEditor");
|
|
12
|
+
const VisualEditor_1 = require("./visual-query-builder/VisualEditor");
|
|
13
|
+
const Space_1 = require("./Space");
|
|
14
|
+
function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range }) {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f;
|
|
16
|
+
const [isQueryRunnable, setIsQueryRunnable] = (0, react_1.useState)(true);
|
|
17
|
+
const db = datasource.getDB();
|
|
18
|
+
const { loading, error } = (0, react_use_1.useAsync)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
return () => {
|
|
20
|
+
if (datasource.getDB(datasource.id).init !== undefined) {
|
|
21
|
+
datasource.getDB(datasource.id).init();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}), [datasource]);
|
|
25
|
+
const queryWithDefaults = (0, defaults_1.applyQueryDefaults)(query);
|
|
26
|
+
const [queryRowFilter, setQueryRowFilter] = (0, react_1.useState)({
|
|
27
|
+
filter: !!((_a = queryWithDefaults.sql) === null || _a === void 0 ? void 0 : _a.whereString),
|
|
28
|
+
group: !!((_d = (_c = (_b = queryWithDefaults.sql) === null || _b === void 0 ? void 0 : _b.groupBy) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.property.name),
|
|
29
|
+
order: !!((_f = (_e = queryWithDefaults.sql) === null || _e === void 0 ? void 0 : _e.orderBy) === null || _f === void 0 ? void 0 : _f.property.name),
|
|
30
|
+
preview: true,
|
|
31
|
+
});
|
|
32
|
+
const [queryToValidate, setQueryToValidate] = (0, react_1.useState)(queryWithDefaults);
|
|
33
|
+
(0, react_1.useEffect)(() => {
|
|
34
|
+
return () => {
|
|
35
|
+
if (datasource.getDB(datasource.id).dispose !== undefined) {
|
|
36
|
+
datasource.getDB(datasource.id).dispose();
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}, [datasource]);
|
|
40
|
+
const processQuery = (0, react_1.useCallback)((q) => {
|
|
41
|
+
if (isQueryValid(q) && onRunQuery) {
|
|
42
|
+
onRunQuery();
|
|
43
|
+
}
|
|
44
|
+
}, [onRunQuery]);
|
|
45
|
+
const onQueryChange = (q, process = true) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
setQueryToValidate(q);
|
|
48
|
+
onChange(q);
|
|
49
|
+
if ((0, sql_utils_1.haveColumns)((_a = q.sql) === null || _a === void 0 ? void 0 : _a.columns) && ((_b = q.sql) === null || _b === void 0 ? void 0 : _b.columns.some((c) => c.name)) && !queryRowFilter.group) {
|
|
50
|
+
setQueryRowFilter(Object.assign(Object.assign({}, queryRowFilter), { group: true }));
|
|
51
|
+
}
|
|
52
|
+
if (process) {
|
|
53
|
+
processQuery(q);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const onQueryHeaderChange = (q) => {
|
|
57
|
+
setQueryToValidate(q);
|
|
58
|
+
onChange(q);
|
|
59
|
+
};
|
|
60
|
+
if (loading || error) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
64
|
+
react_1.default.createElement(QueryHeader_1.QueryHeader, { db: db, onChange: onQueryHeaderChange, onRunQuery: onRunQuery, onQueryRowChange: setQueryRowFilter, queryRowFilter: queryRowFilter, query: queryWithDefaults, isQueryRunnable: isQueryRunnable, labels: datasource.getDB(datasource.id).labels }),
|
|
65
|
+
react_1.default.createElement(Space_1.Space, { v: 0.5 }),
|
|
66
|
+
queryWithDefaults.editorMode !== types_1.EditorMode.Code && (react_1.default.createElement(VisualEditor_1.VisualEditor, { db: db, query: queryWithDefaults, onChange: (q) => onQueryChange(q, false), queryRowFilter: queryRowFilter, onValidate: setIsQueryRunnable, range: range })),
|
|
67
|
+
queryWithDefaults.editorMode === types_1.EditorMode.Code && (react_1.default.createElement(RawEditor_1.RawEditor, { db: db, query: queryWithDefaults, queryToValidate: queryToValidate, onChange: onQueryChange, onRunQuery: onRunQuery, onValidate: setIsQueryRunnable, range: range }))));
|
|
68
|
+
}
|
|
69
|
+
exports.SqlQueryEditor = SqlQueryEditor;
|
|
70
|
+
const isQueryValid = (q) => {
|
|
71
|
+
return Boolean(q.rawSql);
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=QueryEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryEditor.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/QueryEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryHeader = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const react_use_1 = require("react-use");
|
|
7
|
+
const ConfirmModal_1 = require("./ConfirmModal");
|
|
8
|
+
const DatasetSelector_1 = require("./DatasetSelector");
|
|
9
|
+
const ErrorBoundary_1 = require("./ErrorBoundary");
|
|
10
|
+
const TableSelector_1 = require("./TableSelector");
|
|
11
|
+
const ui_1 = require("@grafana/ui");
|
|
12
|
+
const EditorField_1 = require("./EditorField");
|
|
13
|
+
const EditorHeader_1 = require("./EditorHeader");
|
|
14
|
+
const EditorRow_1 = require("./EditorRow");
|
|
15
|
+
const FlexItem_1 = require("./FlexItem");
|
|
16
|
+
const InlineSelect_1 = require("./InlineSelect");
|
|
17
|
+
const Space_1 = require("./Space");
|
|
18
|
+
const types_1 = require("./types");
|
|
19
|
+
const sql_utils_1 = require("./utils/sql.utils");
|
|
20
|
+
const editorModes = [
|
|
21
|
+
{ label: 'Builder', value: types_1.EditorMode.Builder },
|
|
22
|
+
{ label: 'Code', value: types_1.EditorMode.Code },
|
|
23
|
+
];
|
|
24
|
+
function QueryHeader({ db, query, queryRowFilter, onChange, onRunQuery, onQueryRowChange, isQueryRunnable, labels = new Map([['dataset', 'Dataset']]), }) {
|
|
25
|
+
const { editorMode } = query;
|
|
26
|
+
const [_, copyToClipboard] = (0, react_use_1.useCopyToClipboard)();
|
|
27
|
+
const [showConfirm, setShowConfirm] = (0, react_1.useState)(false);
|
|
28
|
+
const toRawSql = db.toRawSql || sql_utils_1.defaultToRawSql;
|
|
29
|
+
const onEditorModeChange = (0, react_1.useCallback)((newEditorMode) => {
|
|
30
|
+
if (editorMode === types_1.EditorMode.Code) {
|
|
31
|
+
setShowConfirm(true);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
onChange(Object.assign(Object.assign({}, query), { editorMode: newEditorMode }));
|
|
35
|
+
}, [editorMode, onChange, query]);
|
|
36
|
+
const onFormatChange = (e) => {
|
|
37
|
+
const next = Object.assign(Object.assign({}, query), { format: e.value !== undefined ? e.value : types_1.QueryFormat.Table });
|
|
38
|
+
onChange(next);
|
|
39
|
+
};
|
|
40
|
+
const onDatasetChange = (e) => {
|
|
41
|
+
if (e.value === query.dataset) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const next = Object.assign(Object.assign({}, query), { dataset: e.value, table: undefined, sql: undefined, rawSql: '' });
|
|
45
|
+
onChange(next);
|
|
46
|
+
};
|
|
47
|
+
const onTableChange = (e) => {
|
|
48
|
+
if (e.value === query.table) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const next = Object.assign(Object.assign({}, query), { table: e.value, sql: undefined, rawSql: '' });
|
|
52
|
+
onChange(next);
|
|
53
|
+
};
|
|
54
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
55
|
+
react_1.default.createElement(EditorHeader_1.EditorHeader, null,
|
|
56
|
+
react_1.default.createElement(ErrorBoundary_1.ErrorBoundary, { fallBackComponent: react_1.default.createElement(ui_1.InlineField, { label: "Format", labelWidth: 15 },
|
|
57
|
+
react_1.default.createElement(ui_1.Select, { placeholder: "Select format", value: query.format, onChange: onFormatChange, options: types_1.QUERY_FORMAT_OPTIONS })) },
|
|
58
|
+
react_1.default.createElement(InlineSelect_1.InlineSelect, { label: "Format", value: query.format, placeholder: "Select format", menuShouldPortal: true, onChange: onFormatChange, options: types_1.QUERY_FORMAT_OPTIONS })),
|
|
59
|
+
editorMode === types_1.EditorMode.Builder && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
60
|
+
react_1.default.createElement(ui_1.InlineSwitch, { id: "sql-filter", label: "Filter", transparent: true, showLabel: true, value: queryRowFilter.filter, onChange: (ev) => ev.target instanceof HTMLInputElement &&
|
|
61
|
+
onQueryRowChange(Object.assign(Object.assign({}, queryRowFilter), { filter: ev.target.checked })) }),
|
|
62
|
+
react_1.default.createElement(ui_1.InlineSwitch, { id: "sql-group", label: "Group", transparent: true, showLabel: true, value: queryRowFilter.group, onChange: (ev) => ev.target instanceof HTMLInputElement &&
|
|
63
|
+
onQueryRowChange(Object.assign(Object.assign({}, queryRowFilter), { group: ev.target.checked })) }),
|
|
64
|
+
react_1.default.createElement(ui_1.InlineSwitch, { id: "sql-order", label: "Order", transparent: true, showLabel: true, value: queryRowFilter.order, onChange: (ev) => ev.target instanceof HTMLInputElement &&
|
|
65
|
+
onQueryRowChange(Object.assign(Object.assign({}, queryRowFilter), { order: ev.target.checked })) }),
|
|
66
|
+
react_1.default.createElement(ui_1.InlineSwitch, { id: "sql-preview", label: "Preview", transparent: true, showLabel: true, value: queryRowFilter.preview, onChange: (ev) => ev.target instanceof HTMLInputElement &&
|
|
67
|
+
onQueryRowChange(Object.assign(Object.assign({}, queryRowFilter), { preview: ev.target.checked })) }))),
|
|
68
|
+
react_1.default.createElement(FlexItem_1.FlexItem, { grow: 1 }),
|
|
69
|
+
isQueryRunnable ? (react_1.default.createElement(ui_1.Button, { icon: "play", variant: "primary", size: "sm", onClick: () => onRunQuery() }, "Run query")) : (react_1.default.createElement(ui_1.Tooltip, { theme: "error", content: react_1.default.createElement(react_1.default.Fragment, null,
|
|
70
|
+
"Your query is invalid. Check below for details. ",
|
|
71
|
+
react_1.default.createElement("br", null),
|
|
72
|
+
"However, you can still run this query."), placement: "top" },
|
|
73
|
+
react_1.default.createElement(ui_1.Button, { icon: "exclamation-triangle", variant: "secondary", size: "sm", onClick: () => onRunQuery() }, "Run query"))),
|
|
74
|
+
react_1.default.createElement(ui_1.RadioButtonGroup, { options: editorModes, size: "sm", value: editorMode, onChange: onEditorModeChange }),
|
|
75
|
+
react_1.default.createElement(ConfirmModal_1.ConfirmModal, { isOpen: showConfirm, onCopy: () => {
|
|
76
|
+
setShowConfirm(false);
|
|
77
|
+
copyToClipboard(query.rawSql);
|
|
78
|
+
onChange(Object.assign(Object.assign({}, query), { rawSql: toRawSql(query), editorMode: types_1.EditorMode.Builder }));
|
|
79
|
+
}, onDiscard: () => {
|
|
80
|
+
setShowConfirm(false);
|
|
81
|
+
onChange(Object.assign(Object.assign({}, query), { rawSql: toRawSql(query), editorMode: types_1.EditorMode.Builder }));
|
|
82
|
+
}, onCancel: () => setShowConfirm(false) })),
|
|
83
|
+
editorMode === types_1.EditorMode.Builder && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
84
|
+
react_1.default.createElement(Space_1.Space, { v: 0.5 }),
|
|
85
|
+
react_1.default.createElement(EditorRow_1.EditorRow, null,
|
|
86
|
+
react_1.default.createElement(EditorField_1.EditorField, { label: labels.get('dataset') || 'Dataset', width: 25 },
|
|
87
|
+
react_1.default.createElement(DatasetSelector_1.DatasetSelector, { db: db, value: query.dataset === undefined ? null : query.dataset, onChange: onDatasetChange })),
|
|
88
|
+
react_1.default.createElement(EditorField_1.EditorField, { label: "Table", width: 25 },
|
|
89
|
+
react_1.default.createElement(TableSelector_1.TableSelector, { db: db, query: query, value: query.table === undefined ? null : query.table, onChange: onTableChange, applyDefault: true })))))));
|
|
90
|
+
}
|
|
91
|
+
exports.QueryHeader = QueryHeader;
|
|
92
|
+
//# sourceMappingURL=QueryHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryHeader.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/QueryHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Space = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const css_1 = require("@emotion/css");
|
|
6
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const Space = (props) => {
|
|
9
|
+
const theme = (0, ui_1.useTheme2)();
|
|
10
|
+
const styles = getStyles(theme, props);
|
|
11
|
+
return react_1.default.createElement("span", { className: (0, css_1.cx)(styles.wrapper) });
|
|
12
|
+
};
|
|
13
|
+
exports.Space = Space;
|
|
14
|
+
exports.Space.defaultProps = {
|
|
15
|
+
v: 0,
|
|
16
|
+
h: 0,
|
|
17
|
+
layout: 'block',
|
|
18
|
+
};
|
|
19
|
+
const getStyles = (0, ui_1.stylesFactory)((theme, props) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
return ({
|
|
22
|
+
wrapper: (0, css_1.css)([
|
|
23
|
+
{
|
|
24
|
+
paddingRight: theme.spacing((_a = props.h) !== null && _a !== void 0 ? _a : 0),
|
|
25
|
+
paddingBottom: theme.spacing((_b = props.v) !== null && _b !== void 0 ? _b : 0),
|
|
26
|
+
},
|
|
27
|
+
props.layout === 'inline' && {
|
|
28
|
+
display: 'inline-block',
|
|
29
|
+
},
|
|
30
|
+
props.layout === 'block' && {
|
|
31
|
+
display: 'block',
|
|
32
|
+
},
|
|
33
|
+
]),
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=Space.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Space.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/Space.tsx"],"names":[],"mappings":";;;;AAAA,sCAAuC;AACvC,0DAA0B;AAG1B,oCAAuD;AAQhD,MAAM,KAAK,GAAG,CAAC,KAAiB,EAAE,EAAE;IACzC,MAAM,KAAK,GAAG,IAAA,cAAS,GAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEvC,OAAO,wCAAM,SAAS,EAAE,IAAA,QAAE,EAAC,MAAM,CAAC,OAAO,CAAC,GAAI,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,KAAK,SAKhB;AAEF,aAAK,CAAC,YAAY,GAAG;IACnB,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,MAAM,EAAE,OAAO;CAChB,CAAC;AAEF,MAAM,SAAS,GAAG,IAAA,kBAAa,EAAC,CAAC,KAAoB,EAAE,KAAiB,EAAE,EAAE;;IAAC,OAAA,CAAC;QAC5E,OAAO,EAAE,IAAA,SAAG,EAAC;YACX;gBACE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,CAAC,CAAC;gBACzC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,MAAA,KAAK,CAAC,CAAC,mCAAI,CAAC,CAAC;aAC3C;YACD,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI;gBAC3B,OAAO,EAAE,cAAc;aACxB;YACD,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI;gBAC1B,OAAO,EAAE,OAAO;aACjB;SACF,CAAC;KACH,CAAC,CAAA;CAAA,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Stack = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const css_1 = require("@emotion/css");
|
|
6
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const Stack = (_a) => {
|
|
9
|
+
var { children } = _a, props = tslib_1.__rest(_a, ["children"]);
|
|
10
|
+
const theme = (0, ui_1.useTheme2)();
|
|
11
|
+
const styles = useStyles(theme, props);
|
|
12
|
+
return react_1.default.createElement("div", { className: styles.root }, children);
|
|
13
|
+
};
|
|
14
|
+
exports.Stack = Stack;
|
|
15
|
+
const useStyles = (0, ui_1.stylesFactory)((theme, props) => {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
return ({
|
|
18
|
+
root: (0, css_1.css)({
|
|
19
|
+
display: 'flex',
|
|
20
|
+
flexDirection: (_a = props.direction) !== null && _a !== void 0 ? _a : 'row',
|
|
21
|
+
flexWrap: ((_b = props.wrap) !== null && _b !== void 0 ? _b : true) ? 'wrap' : undefined,
|
|
22
|
+
alignItems: props.alignItems,
|
|
23
|
+
gap: theme.spacing((_c = props.gap) !== null && _c !== void 0 ? _c : 2),
|
|
24
|
+
}),
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=Stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stack.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/Stack.tsx"],"names":[],"mappings":";;;;AAAA,sCAAmC;AACnC,0DAA6C;AAG7C,oCAAuD;AAShD,MAAM,KAAK,GAAyB,CAAC,EAAsB,EAAE,EAAE;QAA1B,EAAE,QAAQ,OAAY,EAAP,KAAK,sBAApB,YAAsB,CAAF;IAC9D,MAAM,KAAK,GAAG,IAAA,cAAS,GAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEvC,OAAO,uCAAK,SAAS,EAAE,MAAM,CAAC,IAAI,IAAG,QAAQ,CAAO,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,KAAK,SAKhB;AAEF,MAAM,SAAS,GAAG,IAAA,kBAAa,EAAC,CAAC,KAAoB,EAAE,KAAiB,EAAE,EAAE;;IAAC,OAAA,CAAC;QAC5E,IAAI,EAAE,IAAA,SAAG,EAAC;YACR,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,MAAA,KAAK,CAAC,SAAS,mCAAI,KAAK;YACvC,QAAQ,EAAE,CAAA,MAAA,KAAK,CAAC,IAAI,mCAAI,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjD,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,MAAA,KAAK,CAAC,GAAG,mCAAI,CAAC,CAAC;SACnC,CAAC;KACH,CAAC,CAAA;CAAA,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TableSelector = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const react_use_1 = require("react-use");
|
|
7
|
+
const data_1 = require("@grafana/data");
|
|
8
|
+
const ui_1 = require("@grafana/ui");
|
|
9
|
+
const TableSelector = ({ db, query, value, className, onChange }) => {
|
|
10
|
+
const state = (0, react_use_1.useAsync)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
11
|
+
if (!query.dataset) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
const tables = yield db.tables(query.dataset);
|
|
15
|
+
return tables.map(data_1.toOption);
|
|
16
|
+
}), [query.dataset]);
|
|
17
|
+
return (react_1.default.createElement(ui_1.Select, { className: className, disabled: state.loading, "aria-label": "Table selector", value: value, options: state.value, onChange: onChange, isLoading: state.loading, menuShouldPortal: true, placeholder: state.loading ? 'Loading tables' : 'Select table' }));
|
|
18
|
+
};
|
|
19
|
+
exports.TableSelector = TableSelector;
|
|
20
|
+
//# sourceMappingURL=TableSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TableSelector.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/TableSelector.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,yCAAqC;AAErC,wCAA0D;AAC1D,oCAAqC;AAW9B,MAAM,aAAa,GAAiC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvG,MAAM,KAAK,GAAG,IAAA,oBAAQ,EAAC,GAAS,EAAE;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,OAAO,EAAE,CAAC;SACX;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,eAAQ,CAAC,CAAC;IAC9B,CAAC,CAAA,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,8BAAC,WAAM,IACL,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,KAAK,CAAC,OAAO,gBACZ,gBAAgB,EAC3B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,KAAK,CAAC,KAAK,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,KAAK,CAAC,OAAO,EACxB,gBAAgB,EAAE,IAAI,EACtB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,GAC9D,CACH,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,aAAa,iBAsBxB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyQueryDefaults = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
const sql_utils_1 = require("./utils/sql.utils");
|
|
6
|
+
function applyQueryDefaults(q) {
|
|
7
|
+
let editorMode = (q === null || q === void 0 ? void 0 : q.editorMode) || types_1.EditorMode.Builder;
|
|
8
|
+
// Switching to code editor if the query was created before visual query builder was introduced.
|
|
9
|
+
if ((q === null || q === void 0 ? void 0 : q.editorMode) === undefined && (q === null || q === void 0 ? void 0 : q.rawSql) !== undefined) {
|
|
10
|
+
editorMode = types_1.EditorMode.Code;
|
|
11
|
+
}
|
|
12
|
+
const result = Object.assign(Object.assign({}, q), { refId: (q === null || q === void 0 ? void 0 : q.refId) || 'A', format: (q === null || q === void 0 ? void 0 : q.format) !== undefined ? q.format : types_1.QueryFormat.Table, rawSql: (q === null || q === void 0 ? void 0 : q.rawSql) || '', editorMode, sql: (q === null || q === void 0 ? void 0 : q.sql) || {
|
|
13
|
+
columns: [(0, sql_utils_1.createFunctionField)()],
|
|
14
|
+
groupBy: [(0, sql_utils_1.setGroupByField)()],
|
|
15
|
+
limit: 50,
|
|
16
|
+
} });
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
exports.applyQueryDefaults = applyQueryDefaults;
|
|
20
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/defaults.ts"],"names":[],"mappings":";;;AAAA,mCAA4D;AAC5D,iDAAyE;AAEzE,SAAgB,kBAAkB,CAAC,CAAY;IAC7C,IAAI,UAAU,GAAG,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,UAAU,KAAI,kBAAU,CAAC,OAAO,CAAC;IAErD,gGAAgG;IAChG,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,UAAU,MAAK,SAAS,IAAI,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAK,SAAS,EAAE;QAC1D,UAAU,GAAG,kBAAU,CAAC,IAAI,CAAC;KAC9B;IAED,MAAM,MAAM,mCACP,CAAC,KACJ,KAAK,EAAE,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,KAAI,GAAG,EACtB,MAAM,EAAE,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,MAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAW,CAAC,KAAK,EAC9D,MAAM,EAAE,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,KAAI,EAAE,EACvB,UAAU,EACV,GAAG,EAAE,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,GAAG,KAAI;YACb,OAAO,EAAE,CAAC,IAAA,+BAAmB,GAAE,CAAC;YAChC,OAAO,EAAE,CAAC,IAAA,2BAAe,GAAE,CAAC;YAC5B,KAAK,EAAE,EAAE;SACV,GACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAtBD,gDAsBC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryEditorExpressionType = exports.QueryEditorPropertyType = void 0;
|
|
4
|
+
var QueryEditorPropertyType;
|
|
5
|
+
(function (QueryEditorPropertyType) {
|
|
6
|
+
QueryEditorPropertyType["String"] = "string";
|
|
7
|
+
})(QueryEditorPropertyType = exports.QueryEditorPropertyType || (exports.QueryEditorPropertyType = {}));
|
|
8
|
+
var QueryEditorExpressionType;
|
|
9
|
+
(function (QueryEditorExpressionType) {
|
|
10
|
+
QueryEditorExpressionType["Property"] = "property";
|
|
11
|
+
QueryEditorExpressionType["Operator"] = "operator";
|
|
12
|
+
QueryEditorExpressionType["Or"] = "or";
|
|
13
|
+
QueryEditorExpressionType["And"] = "and";
|
|
14
|
+
QueryEditorExpressionType["GroupBy"] = "groupBy";
|
|
15
|
+
QueryEditorExpressionType["Function"] = "function";
|
|
16
|
+
QueryEditorExpressionType["FunctionParameter"] = "functionParameter";
|
|
17
|
+
})(QueryEditorExpressionType = exports.QueryEditorExpressionType || (exports.QueryEditorExpressionType = {}));
|
|
18
|
+
//# sourceMappingURL=expressions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/expressions.ts"],"names":[],"mappings":";;;AAAA,IAAY,uBAEX;AAFD,WAAY,uBAAuB;IACjC,4CAAiB,CAAA;AACnB,CAAC,EAFW,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAElC;AA+BD,IAAY,yBAQX;AARD,WAAY,yBAAyB;IACnC,kDAAqB,CAAA;IACrB,kDAAqB,CAAA;IACrB,sCAAS,CAAA;IACT,wCAAW,CAAA;IACX,gDAAmB,CAAA;IACnB,kDAAqB,CAAA;IACrB,oEAAuC,CAAA;AACzC,CAAC,EARW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAQpC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SqlQueryEditor = exports.Space = exports.InputGroup = exports.InlineSelect = exports.Stack = exports.FlexItem = exports.EditorSwitch = exports.EditorRows = exports.EditorList = exports.EditorRow = exports.EditorField = exports.EditorHeader = exports.EditorFieldGroup = exports.AccessoryButton = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
tslib_1.__exportStar(require("./visual-query-builder"), exports);
|
|
6
|
+
var AccessoryButton_1 = require("./AccessoryButton");
|
|
7
|
+
Object.defineProperty(exports, "AccessoryButton", { enumerable: true, get: function () { return AccessoryButton_1.AccessoryButton; } });
|
|
8
|
+
var EditorFieldGroup_1 = require("./EditorFieldGroup");
|
|
9
|
+
Object.defineProperty(exports, "EditorFieldGroup", { enumerable: true, get: function () { return EditorFieldGroup_1.EditorFieldGroup; } });
|
|
10
|
+
var EditorHeader_1 = require("./EditorHeader");
|
|
11
|
+
Object.defineProperty(exports, "EditorHeader", { enumerable: true, get: function () { return EditorHeader_1.EditorHeader; } });
|
|
12
|
+
var EditorField_1 = require("./EditorField");
|
|
13
|
+
Object.defineProperty(exports, "EditorField", { enumerable: true, get: function () { return EditorField_1.EditorField; } });
|
|
14
|
+
var EditorRow_1 = require("./EditorRow");
|
|
15
|
+
Object.defineProperty(exports, "EditorRow", { enumerable: true, get: function () { return EditorRow_1.EditorRow; } });
|
|
16
|
+
var EditorList_1 = require("./EditorList");
|
|
17
|
+
Object.defineProperty(exports, "EditorList", { enumerable: true, get: function () { return EditorList_1.EditorList; } });
|
|
18
|
+
var EditorRows_1 = require("./EditorRows");
|
|
19
|
+
Object.defineProperty(exports, "EditorRows", { enumerable: true, get: function () { return EditorRows_1.EditorRows; } });
|
|
20
|
+
var EditorSwitch_1 = require("./EditorSwitch");
|
|
21
|
+
Object.defineProperty(exports, "EditorSwitch", { enumerable: true, get: function () { return EditorSwitch_1.EditorSwitch; } });
|
|
22
|
+
var FlexItem_1 = require("./FlexItem");
|
|
23
|
+
Object.defineProperty(exports, "FlexItem", { enumerable: true, get: function () { return FlexItem_1.FlexItem; } });
|
|
24
|
+
var Stack_1 = require("./Stack");
|
|
25
|
+
Object.defineProperty(exports, "Stack", { enumerable: true, get: function () { return Stack_1.Stack; } });
|
|
26
|
+
var InlineSelect_1 = require("./InlineSelect");
|
|
27
|
+
Object.defineProperty(exports, "InlineSelect", { enumerable: true, get: function () { return InlineSelect_1.InlineSelect; } });
|
|
28
|
+
var InputGroup_1 = require("./InputGroup");
|
|
29
|
+
Object.defineProperty(exports, "InputGroup", { enumerable: true, get: function () { return InputGroup_1.InputGroup; } });
|
|
30
|
+
var Space_1 = require("./Space");
|
|
31
|
+
Object.defineProperty(exports, "Space", { enumerable: true, get: function () { return Space_1.Space; } });
|
|
32
|
+
var QueryEditor_1 = require("./QueryEditor");
|
|
33
|
+
Object.defineProperty(exports, "SqlQueryEditor", { enumerable: true, get: function () { return QueryEditor_1.SqlQueryEditor; } });
|
|
34
|
+
tslib_1.__exportStar(require("./types"), exports);
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/QueryEditor/index.ts"],"names":[],"mappings":";;;;AAAA,iEAAuC;AAEvC,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AAEvB,kDAAwB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryEditorRaw = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const experimental_1 = require("@grafana/experimental");
|
|
7
|
+
const formatSQL_1 = require("../utils/formatSQL");
|
|
8
|
+
function QueryEditorRaw({ children, onChange, query, width, height, completionProvider }) {
|
|
9
|
+
// We need to pass query via ref to SQLEditor as onChange is executed via monacoEditor.onDidChangeModelContent callback, not onChange property
|
|
10
|
+
const queryRef = (0, react_1.useRef)(query);
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
queryRef.current = query;
|
|
13
|
+
}, [query]);
|
|
14
|
+
const onRawQueryChange = (0, react_1.useCallback)((rawSql, processQuery) => {
|
|
15
|
+
const newQuery = Object.assign(Object.assign({}, queryRef.current), { rawQuery: true, rawSql });
|
|
16
|
+
onChange(newQuery, processQuery);
|
|
17
|
+
}, [onChange]);
|
|
18
|
+
return (react_1.default.createElement(experimental_1.SQLEditor, { width: width, height: height, query: query.rawSql, onChange: onRawQueryChange, language: { id: 'sql', completionProvider, formatter: formatSQL_1.formatSQL } }, children));
|
|
19
|
+
}
|
|
20
|
+
exports.QueryEditorRaw = QueryEditorRaw;
|
|
21
|
+
//# sourceMappingURL=QueryEditorRaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryEditorRaw.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/query-editor-raw/QueryEditorRaw.tsx"],"names":[],"mappings":";;;;AAAA,uDAA8D;AAE9D,wDAA8E;AAG9E,kDAA+C;AAW/C,SAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAS;IACpG,8IAA8I;IAC9I,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAW,KAAK,CAAC,CAAC;IACzC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;IAC3B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAClC,CAAC,MAAc,EAAE,YAAqB,EAAE,EAAE;QACxC,MAAM,QAAQ,mCACT,QAAQ,CAAC,OAAO,KACnB,QAAQ,EAAE,IAAI,EACd,MAAM,GACP,CAAC;QACF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CACL,8BAAC,wBAAS,IACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,MAAO,EACpB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,qBAAS,EAAE,IAEhE,QAAQ,CACC,CACb,CAAC;AACJ,CAAC;AA9BD,wCA8BC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryToolbox = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const css_1 = require("@emotion/css");
|
|
6
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
const ui_1 = require("@grafana/ui");
|
|
8
|
+
const QueryValidator_1 = require("./QueryValidator");
|
|
9
|
+
function QueryToolbox(_a) {
|
|
10
|
+
var { showTools, onFormatCode, onExpand, isExpanded } = _a, validatorProps = tslib_1.__rest(_a, ["showTools", "onFormatCode", "onExpand", "isExpanded"]);
|
|
11
|
+
const theme = (0, ui_1.useTheme2)();
|
|
12
|
+
const [validationResult, setValidationResult] = (0, react_1.useState)();
|
|
13
|
+
const styles = (0, react_1.useMemo)(() => {
|
|
14
|
+
return {
|
|
15
|
+
container: (0, css_1.css) `
|
|
16
|
+
border: 1px solid ${theme.colors.border.medium};
|
|
17
|
+
border-top: none;
|
|
18
|
+
padding: ${theme.spacing(0.5, 0.5, 0.5, 0.5)};
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-grow: 1;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
font-size: ${theme.typography.bodySmall.fontSize};
|
|
23
|
+
`,
|
|
24
|
+
error: (0, css_1.css) `
|
|
25
|
+
color: ${theme.colors.error.text};
|
|
26
|
+
font-size: ${theme.typography.bodySmall.fontSize};
|
|
27
|
+
font-family: ${theme.typography.fontFamilyMonospace};
|
|
28
|
+
`,
|
|
29
|
+
valid: (0, css_1.css) `
|
|
30
|
+
color: ${theme.colors.success.text};
|
|
31
|
+
`,
|
|
32
|
+
info: (0, css_1.css) `
|
|
33
|
+
color: ${theme.colors.text.secondary};
|
|
34
|
+
`,
|
|
35
|
+
hint: (0, css_1.css) `
|
|
36
|
+
color: ${theme.colors.text.disabled};
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
cursor: help;
|
|
39
|
+
`,
|
|
40
|
+
};
|
|
41
|
+
}, [theme]);
|
|
42
|
+
let style = {};
|
|
43
|
+
if (!showTools && validationResult === undefined) {
|
|
44
|
+
style = { height: 0, padding: 0, visibility: 'hidden' };
|
|
45
|
+
}
|
|
46
|
+
return (react_1.default.createElement("div", { className: styles.container, style: style },
|
|
47
|
+
react_1.default.createElement("div", null, validatorProps.onValidate && (react_1.default.createElement(QueryValidator_1.QueryValidator, Object.assign({}, validatorProps, { onValidate: (result) => {
|
|
48
|
+
setValidationResult(result);
|
|
49
|
+
validatorProps.onValidate(result);
|
|
50
|
+
} })))),
|
|
51
|
+
showTools && (react_1.default.createElement("div", null,
|
|
52
|
+
react_1.default.createElement(ui_1.HorizontalGroup, { spacing: "sm" },
|
|
53
|
+
onFormatCode && (react_1.default.createElement(ui_1.IconButton, { onClick: onFormatCode, name: "brackets-curly", size: "xs", tooltip: "Format query" })),
|
|
54
|
+
onExpand && (react_1.default.createElement(ui_1.IconButton, { onClick: () => onExpand(!isExpanded), name: isExpanded ? 'angle-up' : 'angle-down', size: "xs", tooltip: isExpanded ? 'Collapse editor' : 'Expand editor' })),
|
|
55
|
+
react_1.default.createElement(ui_1.Tooltip, { content: "Hit CTRL/CMD+Return to run query" },
|
|
56
|
+
react_1.default.createElement(ui_1.Icon, { className: styles.hint, name: "keyboard" })))))));
|
|
57
|
+
}
|
|
58
|
+
exports.QueryToolbox = QueryToolbox;
|
|
59
|
+
//# sourceMappingURL=QueryToolbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryToolbox.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/query-editor-raw/QueryToolbox.tsx"],"names":[],"mappings":";;;;AAAA,sCAAmC;AACnC,uDAAiD;AAEjD,oCAAoF;AAEpF,qDAAuE;AAUvE,SAAgB,YAAY,CAAC,EAAuF;QAAvF,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,OAAwC,EAAnC,cAAc,sBAAlE,uDAAoE,CAAF;IAC7F,MAAM,KAAK,GAAG,IAAA,cAAS,GAAE,CAAC;IAC1B,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,IAAA,gBAAQ,GAAW,CAAC;IAEpE,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1B,OAAO;YACL,SAAS,EAAE,IAAA,SAAG,EAAA;4BACQ,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;;mBAEnC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;;;;qBAI/B,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ;OACjD;YACD,KAAK,EAAE,IAAA,SAAG,EAAA;iBACC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;qBACnB,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ;uBACjC,KAAK,CAAC,UAAU,CAAC,mBAAmB;OACpD;YACD,KAAK,EAAE,IAAA,SAAG,EAAA;iBACC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;OACnC;YACD,IAAI,EAAE,IAAA,SAAG,EAAA;iBACE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;OACrC;YACD,IAAI,EAAE,IAAA,SAAG,EAAA;iBACE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;;;OAGpC;SACF,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,IAAI,CAAC,SAAS,IAAI,gBAAgB,KAAK,SAAS,EAAE;QAChD,KAAK,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;KACzD;IAED,OAAO,CACL,uCAAK,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK;QAC5C,2CACG,cAAc,CAAC,UAAU,IAAI,CAC5B,8BAAC,+BAAc,oBACT,cAAc,IAClB,UAAU,EAAE,CAAC,MAAe,EAAE,EAAE;gBAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAC5B,cAAc,CAAC,UAAW,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC,IACD,CACH,CACG;QACL,SAAS,IAAI,CACZ;YACE,8BAAC,oBAAe,IAAC,OAAO,EAAC,IAAI;gBAC1B,YAAY,IAAI,CACf,8BAAC,eAAU,IAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAC,gBAAgB,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,cAAc,GAAG,CAC7F;gBACA,QAAQ,IAAI,CACX,8BAAC,eAAU,IACT,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EACpC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAC5C,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,GACzD,CACH;gBACD,8BAAC,YAAO,IAAC,OAAO,EAAC,kCAAkC;oBACjD,8BAAC,SAAI,IAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAC,UAAU,GAAG,CACxC,CACM,CACd,CACP,CACG,CACP,CAAC;AACJ,CAAC;AA3ED,oCA2EC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryValidator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const css_1 = require("@emotion/css");
|
|
6
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
const react_use_1 = require("react-use");
|
|
8
|
+
const useDebounce_1 = tslib_1.__importDefault(require("react-use/lib/useDebounce"));
|
|
9
|
+
const data_1 = require("@grafana/data");
|
|
10
|
+
const ui_1 = require("@grafana/ui");
|
|
11
|
+
function QueryValidator({ db, query, onValidate, range }) {
|
|
12
|
+
var _a;
|
|
13
|
+
const [validationResult, setValidationResult] = (0, react_1.useState)();
|
|
14
|
+
const theme = (0, ui_1.useTheme2)();
|
|
15
|
+
const valueFormatter = (0, react_1.useMemo)(() => (0, data_1.getValueFormat)('bytes'), []);
|
|
16
|
+
const styles = (0, react_1.useMemo)(() => {
|
|
17
|
+
return {
|
|
18
|
+
error: (0, css_1.css) `
|
|
19
|
+
color: ${theme.colors.error.text};
|
|
20
|
+
font-size: ${theme.typography.bodySmall.fontSize};
|
|
21
|
+
font-family: ${theme.typography.fontFamilyMonospace};
|
|
22
|
+
`,
|
|
23
|
+
valid: (0, css_1.css) `
|
|
24
|
+
color: ${theme.colors.success.text};
|
|
25
|
+
`,
|
|
26
|
+
info: (0, css_1.css) `
|
|
27
|
+
color: ${theme.colors.text.secondary};
|
|
28
|
+
`,
|
|
29
|
+
};
|
|
30
|
+
}, [theme]);
|
|
31
|
+
const [state, validateQuery] = (0, react_use_1.useAsyncFn)((q) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
var _b;
|
|
33
|
+
if (((_b = q.rawSql) === null || _b === void 0 ? void 0 : _b.trim()) === '') {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return yield db.validateQuery(q, range);
|
|
37
|
+
}), [db]);
|
|
38
|
+
const [,] = (0, useDebounce_1.default)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const result = yield validateQuery(query);
|
|
40
|
+
if (result) {
|
|
41
|
+
setValidationResult(result);
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}), 1000, [query, validateQuery]);
|
|
45
|
+
(0, react_1.useEffect)(() => {
|
|
46
|
+
if (validationResult === null || validationResult === void 0 ? void 0 : validationResult.isError) {
|
|
47
|
+
onValidate(false);
|
|
48
|
+
}
|
|
49
|
+
if (validationResult === null || validationResult === void 0 ? void 0 : validationResult.isValid) {
|
|
50
|
+
onValidate(true);
|
|
51
|
+
}
|
|
52
|
+
}, [validationResult, onValidate]);
|
|
53
|
+
if (!state.value && !state.loading) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const error = ((_a = state.value) === null || _a === void 0 ? void 0 : _a.error) ? processErrorMessage(state.value.error) : '';
|
|
57
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
58
|
+
state.loading && (react_1.default.createElement("div", { className: styles.info },
|
|
59
|
+
react_1.default.createElement(ui_1.Spinner, { inline: true, size: 12 }),
|
|
60
|
+
" Validating query...")),
|
|
61
|
+
!state.loading && state.value && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
62
|
+
react_1.default.createElement(react_1.default.Fragment, null, state.value.isValid && state.value.statistics && (react_1.default.createElement("div", { className: styles.valid },
|
|
63
|
+
react_1.default.createElement(ui_1.Icon, { name: "check" }),
|
|
64
|
+
" This query will process",
|
|
65
|
+
' ',
|
|
66
|
+
react_1.default.createElement("strong", null, (0, data_1.formattedValueToString)(valueFormatter(state.value.statistics.TotalBytesProcessed))),
|
|
67
|
+
' ',
|
|
68
|
+
"when run."))),
|
|
69
|
+
react_1.default.createElement(react_1.default.Fragment, null, state.value.isError && react_1.default.createElement("div", { className: styles.error }, error))))));
|
|
70
|
+
}
|
|
71
|
+
exports.QueryValidator = QueryValidator;
|
|
72
|
+
function processErrorMessage(error) {
|
|
73
|
+
const splat = error.split(':');
|
|
74
|
+
if (splat.length > 2) {
|
|
75
|
+
return splat.slice(2).join(':');
|
|
76
|
+
}
|
|
77
|
+
return error;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=QueryValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryValidator.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/query-editor-raw/QueryValidator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RawEditor = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const css_1 = require("@emotion/css");
|
|
6
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
7
|
+
const react_use_1 = require("react-use");
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
const react_virtualized_auto_sizer_1 = tslib_1.__importDefault(require("react-virtualized-auto-sizer"));
|
|
10
|
+
const ui_1 = require("@grafana/ui");
|
|
11
|
+
const QueryEditorRaw_1 = require("./QueryEditorRaw");
|
|
12
|
+
const QueryToolbox_1 = require("./QueryToolbox");
|
|
13
|
+
function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }) {
|
|
14
|
+
const theme = (0, ui_1.useTheme2)();
|
|
15
|
+
const styles = (0, ui_1.useStyles2)(getStyles);
|
|
16
|
+
const [isExpanded, setIsExpanded] = (0, react_1.useState)(false);
|
|
17
|
+
const [toolboxRef, toolboxMeasure] = (0, react_use_1.useMeasure)();
|
|
18
|
+
const [editorRef, editorMeasure] = (0, react_use_1.useMeasure)();
|
|
19
|
+
const completionProvider = (0, react_1.useMemo)(() => db.getSqlCompletionProvider(), [db]);
|
|
20
|
+
const renderQueryEditor = (width, height) => {
|
|
21
|
+
return (react_1.default.createElement(QueryEditorRaw_1.QueryEditorRaw, { completionProvider: completionProvider, query: query, width: width, height: height ? height - toolboxMeasure.height : undefined, onChange: onChange }, ({ formatQuery }) => {
|
|
22
|
+
return (react_1.default.createElement("div", { ref: toolboxRef },
|
|
23
|
+
react_1.default.createElement(QueryToolbox_1.QueryToolbox, { db: db, query: queryToValidate, onValidate: onValidate, onFormatCode: formatQuery, showTools: true, range: range, onExpand: setIsExpanded, isExpanded: isExpanded })));
|
|
24
|
+
}));
|
|
25
|
+
};
|
|
26
|
+
const renderEditor = (standalone = false) => {
|
|
27
|
+
return standalone ? (react_1.default.createElement(react_virtualized_auto_sizer_1.default, null, ({ width, height }) => {
|
|
28
|
+
return renderQueryEditor(width, height);
|
|
29
|
+
})) : (react_1.default.createElement("div", { ref: editorRef }, renderQueryEditor()));
|
|
30
|
+
};
|
|
31
|
+
const renderPlaceholder = () => {
|
|
32
|
+
return (react_1.default.createElement("div", { style: {
|
|
33
|
+
width: editorMeasure.width,
|
|
34
|
+
height: editorMeasure.height,
|
|
35
|
+
background: theme.colors.background.primary,
|
|
36
|
+
display: 'flex',
|
|
37
|
+
alignItems: 'center',
|
|
38
|
+
justifyContent: 'center',
|
|
39
|
+
} }, "Editing in expanded code editor"));
|
|
40
|
+
};
|
|
41
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
42
|
+
isExpanded ? renderPlaceholder() : renderEditor(),
|
|
43
|
+
isExpanded && (react_1.default.createElement(ui_1.Modal, { title: `Query ${query.refId}`, closeOnBackdropClick: false, closeOnEscape: false, className: styles.modal, contentClassName: styles.modalContent, isOpen: isExpanded, onDismiss: () => {
|
|
44
|
+
setIsExpanded(false);
|
|
45
|
+
} }, renderEditor(true)))));
|
|
46
|
+
}
|
|
47
|
+
exports.RawEditor = RawEditor;
|
|
48
|
+
function getStyles(theme) {
|
|
49
|
+
return {
|
|
50
|
+
modal: (0, css_1.css) `
|
|
51
|
+
width: 95vw;
|
|
52
|
+
height: 95vh;
|
|
53
|
+
`,
|
|
54
|
+
modalContent: (0, css_1.css) `
|
|
55
|
+
height: 100%;
|
|
56
|
+
padding-top: 0;
|
|
57
|
+
`,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=RawEditor.js.map
|