@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,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLSelectRow = 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 SelectRow_1 = require("./SelectRow");
|
|
9
|
+
const useSqlChange_1 = require("../utils/useSqlChange");
|
|
10
|
+
function SQLSelectRow({ fields, query, onQueryChange, db }) {
|
|
11
|
+
const { onSqlChange } = (0, useSqlChange_1.useSqlChange)({ query, onQueryChange, db });
|
|
12
|
+
const state = (0, react_use_1.useAsync)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
const functions = yield db.functions();
|
|
14
|
+
return functions.map((f) => (0, data_1.toOption)(f.name));
|
|
15
|
+
}), [db]);
|
|
16
|
+
return react_1.default.createElement(SelectRow_1.SelectRow, { columns: fields, sql: query.sql, functions: state.value, onSqlChange: onSqlChange });
|
|
17
|
+
}
|
|
18
|
+
exports.SQLSelectRow = SQLSelectRow;
|
|
19
|
+
//# sourceMappingURL=SQLSelectRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLSelectRow.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/visual-query-builder/SQLSelectRow.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,yCAAqC;AAErC,wCAA0D;AAE1D,2CAAwC;AAGxC,wDAAqD;AASrD,SAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAqB;IAClF,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,2BAAY,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,IAAA,oBAAQ,EAAC,GAAS,EAAE;QAChC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,SAAS,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,eAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC,CAAA,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAET,OAAO,8BAAC,qBAAS,IAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAI,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,GAAI,CAAC;AAC3G,CAAC;AATD,oCASC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQLWhereRow = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
const useAsync_1 = tslib_1.__importDefault(require("react-use/lib/useAsync"));
|
|
7
|
+
const WhereRow_1 = require("./WhereRow");
|
|
8
|
+
const useSqlChange_1 = require("../utils/useSqlChange");
|
|
9
|
+
function SQLWhereRow({ query, fields, onQueryChange, db }) {
|
|
10
|
+
const state = (0, useAsync_1.default)(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
11
|
+
return mapFieldsToTypes(fields);
|
|
12
|
+
}), [fields]);
|
|
13
|
+
const { onSqlChange } = (0, useSqlChange_1.useSqlChange)({ query, onQueryChange, db });
|
|
14
|
+
return (react_1.default.createElement(WhereRow_1.WhereRow
|
|
15
|
+
// TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly
|
|
16
|
+
, {
|
|
17
|
+
// TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly
|
|
18
|
+
key: JSON.stringify(state.value), config: { fields: state.value || {} }, sql: query.sql, onSqlChange: (val) => {
|
|
19
|
+
onSqlChange(val);
|
|
20
|
+
} }));
|
|
21
|
+
}
|
|
22
|
+
exports.SQLWhereRow = SQLWhereRow;
|
|
23
|
+
// needed for awesome query builder
|
|
24
|
+
function mapFieldsToTypes(columns) {
|
|
25
|
+
const fields = {};
|
|
26
|
+
for (const col of columns) {
|
|
27
|
+
fields[col.value] = {
|
|
28
|
+
type: col.raqbFieldType || 'text',
|
|
29
|
+
valueSources: ['value'],
|
|
30
|
+
mainWidgetProps: { customProps: { icon: col.icon } },
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
return fields;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=SQLWhereRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLWhereRow.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/visual-query-builder/SQLWhereRow.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,8EAA8C;AAK9C,yCAAsC;AAGtC,wDAAqD;AASrD,SAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,EAAiB;IAC7E,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,GAAS,EAAE;QAChC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAA,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,2BAAY,EAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,OAAO,CACL,8BAAC,mBAAQ;IACP,mHAAmH;;QAAnH,mHAAmH;QACnH,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAChC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,EACrC,GAAG,EAAE,KAAK,CAAC,GAAI,EACf,WAAW,EAAE,CAAC,GAAkB,EAAE,EAAE;YAClC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,GACD,CACH,CAAC;AACJ,CAAC;AAlBD,kCAkBC;AAED,mCAAmC;AACnC,SAAS,gBAAgB,CAAC,OAA6B;IACrD,MAAM,MAAM,GAAqB,EAAE,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;YAClB,IAAI,EAAE,GAAG,CAAC,aAAa,IAAI,MAAM;YACjC,YAAY,EAAE,CAAC,OAAO,CAAC;YACvB,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE;SACrD,CAAC;KACH;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SelectRow = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const css_1 = require("@emotion/css");
|
|
6
|
+
const lodash_1 = require("lodash");
|
|
7
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
8
|
+
const data_1 = require("@grafana/data");
|
|
9
|
+
const ui_1 = require("@grafana/ui");
|
|
10
|
+
const EditorField_1 = require("../EditorField");
|
|
11
|
+
const expressions_1 = require("../expressions");
|
|
12
|
+
const sql_utils_1 = require("../utils/sql.utils");
|
|
13
|
+
const Stack_1 = require("../Stack");
|
|
14
|
+
const asteriskValue = { label: '*', value: '*' };
|
|
15
|
+
function SelectRow({ sql, columns, onSqlChange, functions }) {
|
|
16
|
+
var _a;
|
|
17
|
+
const styles = (0, ui_1.useStyles2)(getStyles);
|
|
18
|
+
const columnsWithAsterisk = [asteriskValue, ...(columns || [])];
|
|
19
|
+
const onColumnChange = (0, react_1.useCallback)((item, index) => (column) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
let modifiedItem = Object.assign({}, item);
|
|
22
|
+
if (!((_a = item.parameters) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
23
|
+
modifiedItem.parameters = [{ type: expressions_1.QueryEditorExpressionType.FunctionParameter, name: column.value }];
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
modifiedItem.parameters = item.parameters.map((p) => p.type === expressions_1.QueryEditorExpressionType.FunctionParameter ? Object.assign(Object.assign({}, p), { name: column.value }) : p);
|
|
27
|
+
}
|
|
28
|
+
const newSql = Object.assign(Object.assign({}, sql), { columns: (_b = sql.columns) === null || _b === void 0 ? void 0 : _b.map((c, i) => (i === index ? modifiedItem : c)) });
|
|
29
|
+
onSqlChange(newSql);
|
|
30
|
+
}, [onSqlChange, sql]);
|
|
31
|
+
const onAggregationChange = (0, react_1.useCallback)((item, index) => (aggregation) => {
|
|
32
|
+
var _a;
|
|
33
|
+
const newItem = Object.assign(Object.assign({}, item), { name: aggregation === null || aggregation === void 0 ? void 0 : aggregation.value });
|
|
34
|
+
const newSql = Object.assign(Object.assign({}, sql), { columns: (_a = sql.columns) === null || _a === void 0 ? void 0 : _a.map((c, i) => (i === index ? newItem : c)) });
|
|
35
|
+
onSqlChange(newSql);
|
|
36
|
+
}, [onSqlChange, sql]);
|
|
37
|
+
const removeColumn = (0, react_1.useCallback)((index) => () => {
|
|
38
|
+
const clone = [...sql.columns];
|
|
39
|
+
clone.splice(index, 1);
|
|
40
|
+
const newSql = Object.assign(Object.assign({}, sql), { columns: clone });
|
|
41
|
+
onSqlChange(newSql);
|
|
42
|
+
}, [onSqlChange, sql]);
|
|
43
|
+
const addColumn = (0, react_1.useCallback)(() => {
|
|
44
|
+
const newSql = Object.assign(Object.assign({}, sql), { columns: [...sql.columns, (0, sql_utils_1.createFunctionField)()] });
|
|
45
|
+
onSqlChange(newSql);
|
|
46
|
+
}, [onSqlChange, sql]);
|
|
47
|
+
return (react_1.default.createElement(Stack_1.Stack, { gap: 2, alignItems: "end", wrap: true, direction: "column" }, (_a = sql.columns) === null || _a === void 0 ? void 0 :
|
|
48
|
+
_a.map((item, index) => (react_1.default.createElement("div", { key: index },
|
|
49
|
+
react_1.default.createElement(Stack_1.Stack, { gap: 2, alignItems: "end" },
|
|
50
|
+
react_1.default.createElement(EditorField_1.EditorField, { label: "Column", width: 25 },
|
|
51
|
+
react_1.default.createElement(ui_1.Select, { value: getColumnValue(item), options: columnsWithAsterisk, inputId: `select-column-${index}-${(0, lodash_1.uniqueId)()}`, menuShouldPortal: true, allowCustomValue: true, onChange: onColumnChange(item, index) })),
|
|
52
|
+
react_1.default.createElement(EditorField_1.EditorField, { label: "Aggregation", optional: true, width: 25 },
|
|
53
|
+
react_1.default.createElement(ui_1.Select, { value: item.name ? (0, data_1.toOption)(item.name) : null, inputId: `select-aggregation-${index}-${(0, lodash_1.uniqueId)()}`, isClearable: true, menuShouldPortal: true, allowCustomValue: true, options: functions, onChange: onAggregationChange(item, index) })),
|
|
54
|
+
react_1.default.createElement(ui_1.Button, { "aria-label": "Remove", type: "button", icon: "trash-alt", variant: "secondary", size: "md", onClick: removeColumn(index) }))))),
|
|
55
|
+
react_1.default.createElement(ui_1.Button, { type: "button", onClick: addColumn, variant: "secondary", size: "md", icon: "plus", "aria-label": "Add", className: styles.addButton })));
|
|
56
|
+
}
|
|
57
|
+
exports.SelectRow = SelectRow;
|
|
58
|
+
const getStyles = () => {
|
|
59
|
+
return { addButton: (0, css_1.css)({ alignSelf: 'flex-start' }) };
|
|
60
|
+
};
|
|
61
|
+
function getColumnValue({ parameters }) {
|
|
62
|
+
const column = parameters === null || parameters === void 0 ? void 0 : parameters.find((p) => p.type === expressions_1.QueryEditorExpressionType.FunctionParameter);
|
|
63
|
+
if (column === null || column === void 0 ? void 0 : column.name) {
|
|
64
|
+
return (0, data_1.toOption)(column.name);
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=SelectRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectRow.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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/visual-query-builder/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,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VisualEditor = 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 QueryToolbox_1 = require("../query-editor-raw/QueryToolbox");
|
|
8
|
+
const Preview_1 = require("./Preview");
|
|
9
|
+
const SQLGroupByRow_1 = require("./SQLGroupByRow");
|
|
10
|
+
const SQLOrderByRow_1 = require("./SQLOrderByRow");
|
|
11
|
+
const SQLSelectRow_1 = require("./SQLSelectRow");
|
|
12
|
+
const SQLWhereRow_1 = require("./SQLWhereRow");
|
|
13
|
+
const EditorRow_1 = require("./EditorRow");
|
|
14
|
+
const EditorField_1 = require("./EditorField");
|
|
15
|
+
const EditorRows_1 = require("./EditorRows");
|
|
16
|
+
const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range, }) => {
|
|
17
|
+
const state = (0, react_use_1.useAsync)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
const fields = yield db.fields(query);
|
|
19
|
+
return fields;
|
|
20
|
+
}), [db, query.dataset, query.table]);
|
|
21
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
22
|
+
react_1.default.createElement(EditorRows_1.EditorRows, null,
|
|
23
|
+
react_1.default.createElement(EditorRow_1.EditorRow, null,
|
|
24
|
+
react_1.default.createElement(SQLSelectRow_1.SQLSelectRow, { fields: state.value || [], query: query, onQueryChange: onChange, db: db })),
|
|
25
|
+
queryRowFilter.filter && (react_1.default.createElement(EditorRow_1.EditorRow, null,
|
|
26
|
+
react_1.default.createElement(EditorField_1.EditorField, { label: "Filter by column value", optional: true },
|
|
27
|
+
react_1.default.createElement(SQLWhereRow_1.SQLWhereRow, { fields: state.value || [], query: query, onQueryChange: onChange, db: db })))),
|
|
28
|
+
queryRowFilter.group && (react_1.default.createElement(EditorRow_1.EditorRow, null,
|
|
29
|
+
react_1.default.createElement(EditorField_1.EditorField, { label: "Group by column" },
|
|
30
|
+
react_1.default.createElement(SQLGroupByRow_1.SQLGroupByRow, { fields: state.value || [], query: query, onQueryChange: onChange, db: db })))),
|
|
31
|
+
queryRowFilter.order && (react_1.default.createElement(EditorRow_1.EditorRow, null,
|
|
32
|
+
react_1.default.createElement(SQLOrderByRow_1.SQLOrderByRow, { fields: state.value || [], query: query, onQueryChange: onChange, db: db }))),
|
|
33
|
+
queryRowFilter.preview && query.rawSql && (react_1.default.createElement(EditorRow_1.EditorRow, null,
|
|
34
|
+
react_1.default.createElement(Preview_1.Preview, { rawSql: query.rawSql })))),
|
|
35
|
+
react_1.default.createElement(QueryToolbox_1.QueryToolbox, { db: db, query: query, onValidate: onValidate, range: range })));
|
|
36
|
+
};
|
|
37
|
+
exports.VisualEditor = VisualEditor;
|
|
38
|
+
//# sourceMappingURL=VisualEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisualEditor.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAC1B,yCAAqC;AAGrC,mEAAgE;AAEhE,uCAAoC;AACpC,mDAAgD;AAChD,mDAAgD;AAChD,iDAA8C;AAC9C,+CAA4C;AAG5C,2CAAwC;AACxC,+CAA4C;AAC5C,6CAAyC;AAWlC,MAAM,YAAY,GAAgC,CAAC,EACxD,KAAK,EACL,EAAE,EACF,cAAc,EACd,QAAQ,EACR,UAAU,EACV,KAAK,GACN,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAA,oBAAQ,EAAC,GAAS,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAA,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAErC,OAAO,CACL;QACE,8BAAC,uBAAU;YACT,8BAAC,qBAAS;gBACR,8BAAC,2BAAY,IAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAI,CAChF;YACX,cAAc,CAAC,MAAM,IAAI,CACxB,8BAAC,qBAAS;gBACR,8BAAC,yBAAW,IAAC,KAAK,EAAC,wBAAwB,EAAC,QAAQ;oBAClD,8BAAC,yBAAW,IAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAI,CAC7E,CACJ,CACb;YACA,cAAc,CAAC,KAAK,IAAI,CACvB,8BAAC,qBAAS;gBACR,8BAAC,yBAAW,IAAC,KAAK,EAAC,iBAAiB;oBAClC,8BAAC,6BAAa,IAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAI,CAC/E,CACJ,CACb;YACA,cAAc,CAAC,KAAK,IAAI,CACvB,8BAAC,qBAAS;gBACR,8BAAC,6BAAa,IAAC,MAAM,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAI,CACjF,CACb;YACA,cAAc,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,CACzC,8BAAC,qBAAS;gBACR,8BAAC,iBAAO,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAI,CACvB,CACb,CACU;QACb,8BAAC,2BAAY,IAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAI,CAC3E,CACJ,CAAC;AACJ,CAAC,CAAC;AA/CW,QAAA,YAAY,gBA+CvB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WhereRow = 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_awesome_query_builder_1 = require("react-awesome-query-builder");
|
|
8
|
+
const AwesomeQueryBuilder_1 = require("./AwesomeQueryBuilder");
|
|
9
|
+
function WhereRow({ sql, config, onSqlChange }) {
|
|
10
|
+
const [tree, setTree] = (0, react_1.useState)();
|
|
11
|
+
const configWithDefaults = (0, react_1.useMemo)(() => (Object.assign(Object.assign({}, AwesomeQueryBuilder_1.raqbConfig), config)), [config]);
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
var _a;
|
|
14
|
+
// Set the initial tree
|
|
15
|
+
if (!tree) {
|
|
16
|
+
const initTree = react_awesome_query_builder_1.Utils.checkTree(react_awesome_query_builder_1.Utils.loadTree((_a = sql.whereJsonTree) !== null && _a !== void 0 ? _a : AwesomeQueryBuilder_1.emptyInitTree), configWithDefaults);
|
|
17
|
+
setTree(initTree);
|
|
18
|
+
}
|
|
19
|
+
}, [configWithDefaults, sql.whereJsonTree, tree]);
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
if (!sql.whereJsonTree) {
|
|
22
|
+
setTree(react_awesome_query_builder_1.Utils.checkTree(react_awesome_query_builder_1.Utils.loadTree(AwesomeQueryBuilder_1.emptyInitTree), configWithDefaults));
|
|
23
|
+
}
|
|
24
|
+
}, [configWithDefaults, sql.whereJsonTree]);
|
|
25
|
+
const onTreeChange = (0, react_1.useCallback)((changedTree, config) => {
|
|
26
|
+
setTree(changedTree);
|
|
27
|
+
const newSql = Object.assign(Object.assign({}, sql), { whereJsonTree: react_awesome_query_builder_1.Utils.getTree(changedTree), whereString: react_awesome_query_builder_1.Utils.sqlFormat(changedTree, config) });
|
|
28
|
+
onSqlChange(newSql);
|
|
29
|
+
}, [onSqlChange, sql]);
|
|
30
|
+
if (!tree) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return (react_1.default.createElement(react_awesome_query_builder_1.Query, Object.assign({}, configWithDefaults, { value: tree, onChange: onTreeChange, renderBuilder: (props) => react_1.default.createElement(react_awesome_query_builder_1.Builder, Object.assign({}, props)) })));
|
|
34
|
+
}
|
|
35
|
+
exports.WhereRow = WhereRow;
|
|
36
|
+
function flex(direction) {
|
|
37
|
+
return `
|
|
38
|
+
display: flex;
|
|
39
|
+
gap: 8px;
|
|
40
|
+
flex-direction: ${direction};`;
|
|
41
|
+
}
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
43
|
+
(0, css_1.injectGlobal) `
|
|
44
|
+
.group--header {
|
|
45
|
+
${flex('row')}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.group-or-rule {
|
|
49
|
+
${flex('column')}
|
|
50
|
+
.rule {
|
|
51
|
+
flex-direction: row;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.rule--body {
|
|
56
|
+
${flex('row')}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.group--children {
|
|
60
|
+
${flex('column')}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.group--conjunctions:empty {
|
|
64
|
+
display: none;
|
|
65
|
+
}
|
|
66
|
+
`;
|
|
67
|
+
//# sourceMappingURL=WhereRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhereRow.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx"],"names":[],"mappings":";;;;AAAA,sCAA4C;AAC5C,uDAAyE;AACzE,6EAA2F;AAE3F,+DAAkE;AAQlE,SAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAA2B;IAC5E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,GAAiB,CAAC;IAClD,MAAM,kBAAkB,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,iCAAM,gCAAU,GAAK,MAAM,EAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnF,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACb,uBAAuB;QACvB,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,QAAQ,GAAG,mCAAK,CAAC,SAAS,CAAC,mCAAK,CAAC,QAAQ,CAAC,MAAA,GAAG,CAAC,aAAa,mCAAI,mCAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACzG,OAAO,CAAC,QAAQ,CAAC,CAAC;SACnB;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAElD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACtB,OAAO,CAAC,mCAAK,CAAC,SAAS,CAAC,mCAAK,CAAC,QAAQ,CAAC,mCAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;SAC7E;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;IAE5C,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,CAAC,WAA0B,EAAE,MAAc,EAAE,EAAE;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,mCACP,GAAG,KACN,aAAa,EAAE,mCAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EACzC,WAAW,EAAE,mCAAK,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,GAClD,CAAC;QAEF,WAAW,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,EACD,CAAC,WAAW,EAAE,GAAG,CAAC,CACnB,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,mCAAK,oBACA,kBAAkB,IACtB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,YAAY,EACtB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,8BAAC,qCAAO,oBAAK,KAAK,EAAI,IAChD,CACH,CAAC;AACJ,CAAC;AA5CD,4BA4CC;AAED,SAAS,IAAI,CAAC,SAAiB;IAC7B,OAAO;;;sBAGa,SAAS,GAAG,CAAC;AACnC,CAAC;AAED,oEAAoE;AACpE,IAAA,kBAAY,EAAA;;MAEN,IAAI,CAAC,KAAK,CAAC;;;;MAIX,IAAI,CAAC,QAAQ,CAAC;;;;;;;MAOd,IAAI,CAAC,KAAK,CAAC;;;;MAIX,IAAI,CAAC,QAAQ,CAAC;;;;;;CAMnB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupByRow = void 0;
|
|
4
|
+
var GroupByRow_1 = require("./GroupByRow");
|
|
5
|
+
Object.defineProperty(exports, "GroupByRow", { enumerable: true, get: function () { return GroupByRow_1.GroupByRow; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/QueryEditor/visual-query-builder/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueryEditorRow = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
6
|
+
;
|
|
7
|
+
const QueryEditorRow = (props) => {
|
|
8
|
+
var _a, _b;
|
|
9
|
+
const className = (_a = props.className) !== null && _a !== void 0 ? _a : 'width-8';
|
|
10
|
+
const noFillEnd = (_b = props.noFillEnd) !== null && _b !== void 0 ? _b : false;
|
|
11
|
+
return (react_1.default.createElement("div", { className: 'gf-form' },
|
|
12
|
+
props.label && (react_1.default.createElement("label", { className: `gf-form-label query-keyword ${className}` }, props.label)),
|
|
13
|
+
props.children,
|
|
14
|
+
react_1.default.createElement("div", { className: 'gf-form--grow' }, noFillEnd || (react_1.default.createElement("div", { className: 'gf-form-label gf-form-label--grow' })))));
|
|
15
|
+
};
|
|
16
|
+
exports.QueryEditorRow = QueryEditorRow;
|
|
17
|
+
//# sourceMappingURL=QueryEditorRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryEditorRow.js","sourceRoot":"","sources":["../../../src/components/QueryEditorRow/QueryEditorRow.tsx"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAOzB,CAAC;AAEK,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE;;IAC3D,MAAM,SAAS,GAAW,MAAA,KAAK,CAAC,SAAS,mCAAI,SAAS,CAAC;IACvD,MAAM,SAAS,GAAY,MAAA,KAAK,CAAC,SAAS,mCAAI,KAAK,CAAC;IAEpD,OAAO,CACL,uCAAK,SAAS,EAAC,SAAS;QACrB,KAAK,CAAC,KAAK,IAAI,CACd,yCAAO,SAAS,EAAE,+BAA+B,SAAS,EAAE,IAAG,KAAK,CAAC,KAAK,CAAS,CACpF;QACA,KAAK,CAAC,QAAQ;QAEf,uCAAK,SAAS,EAAE,eAAe,IAC5B,SAAS,IAAI,CACZ,uCAAK,SAAS,EAAE,mCAAmC,GAAQ,CAC5D,CACG,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Segment = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const react_1 = tslib_1.__importStar(require("react"));
|
|
6
|
+
const ui_1 = require("@grafana/ui");
|
|
7
|
+
const useDebounce_1 = require("../../hooks/useDebounce");
|
|
8
|
+
function Segment(props) {
|
|
9
|
+
const { delay, onDebounce, value, options } = props, rest = tslib_1.__rest(props, ["delay", "onDebounce", "value", "options"]);
|
|
10
|
+
const [input, setInput] = react_1.default.useState(value);
|
|
11
|
+
const debouncedSegment = (0, useDebounce_1.useDebounce)(input, delay);
|
|
12
|
+
(0, react_1.useEffect)(() => onDebounce(debouncedSegment), [debouncedSegment]);
|
|
13
|
+
(0, react_1.useEffect)(() => setInput(value), [value]);
|
|
14
|
+
return (react_1.default.createElement(ui_1.Segment, Object.assign({ options: options, onChange: (ev) => setInput(ev.value), value: input }, rest)));
|
|
15
|
+
}
|
|
16
|
+
exports.Segment = Segment;
|
|
17
|
+
;
|
|
18
|
+
//# sourceMappingURL=Segment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Segment.js","sourceRoot":"","sources":["../../../src/components/Segment/Segment.tsx"],"names":[],"mappings":";;;;AAAA,uDAAyC;AACzC,oCAAwD;AAGxD,yDAAsD;AAQtD,SAAgB,OAAO,CAAK,KAAsB;IAChD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAc,KAAK,EAAd,IAAI,kBAAK,KAAK,EAAtD,2CAA8C,CAAQ,CAAC;IAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEnD,IAAA,iBAAS,EAAC,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAClE,IAAA,iBAAS,EAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1C,OAAO,CACL,8BAAC,YAAc,kBACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,EAAsB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAM,CAAC,EACzD,KAAK,EAAE,KAAK,IACR,IAAI,EACR,CACH,CAAC;AACJ,CAAC;AAjBD,0BAiBC;AAAA,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CertificationKey = exports.InlineSwitch = exports.formatDate = exports.DatePickerWithInput = exports.DatePicker = exports.Segment = exports.DebounceInput = exports.QueryEditorRow = exports.AsyncButtonCascader = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
var AsyncButtonCascader_1 = require("./AsyncButtonCascader/AsyncButtonCascader");
|
|
6
|
+
Object.defineProperty(exports, "AsyncButtonCascader", { enumerable: true, get: function () { return AsyncButtonCascader_1.AsyncButtonCascader; } });
|
|
7
|
+
var QueryEditorRow_1 = require("./QueryEditorRow/QueryEditorRow");
|
|
8
|
+
Object.defineProperty(exports, "QueryEditorRow", { enumerable: true, get: function () { return QueryEditorRow_1.QueryEditorRow; } });
|
|
9
|
+
var DebounceInput_1 = require("./DebounceInput/DebounceInput");
|
|
10
|
+
Object.defineProperty(exports, "DebounceInput", { enumerable: true, get: function () { return DebounceInput_1.DebounceInput; } });
|
|
11
|
+
var Segment_1 = require("./Segment/Segment");
|
|
12
|
+
Object.defineProperty(exports, "Segment", { enumerable: true, get: function () { return Segment_1.Segment; } });
|
|
13
|
+
var DatePicker_1 = require("./DatePicker/DatePicker");
|
|
14
|
+
Object.defineProperty(exports, "DatePicker", { enumerable: true, get: function () { return DatePicker_1.DatePicker; } });
|
|
15
|
+
var DatePickerWithInput_1 = require("./DatePickerWithInput/DatePickerWithInput");
|
|
16
|
+
Object.defineProperty(exports, "DatePickerWithInput", { enumerable: true, get: function () { return DatePickerWithInput_1.DatePickerWithInput; } });
|
|
17
|
+
Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return DatePickerWithInput_1.formatDate; } });
|
|
18
|
+
tslib_1.__exportStar(require("./DataSourcePicker/DataSourcePicker"), exports);
|
|
19
|
+
tslib_1.__exportStar(require("./DataLinks"), exports);
|
|
20
|
+
tslib_1.__exportStar(require("./Cascader/Cascader"), exports);
|
|
21
|
+
var ui_1 = require("@grafana/ui");
|
|
22
|
+
Object.defineProperty(exports, "InlineSwitch", { enumerable: true, get: function () { return ui_1.InlineSwitch; } });
|
|
23
|
+
Object.defineProperty(exports, "CertificationKey", { enumerable: true, get: function () { return ui_1.CertificationKey; } });
|
|
24
|
+
tslib_1.__exportStar(require("./QueryEditor"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;AAAA,iFAAgF;AAAvE,0HAAA,mBAAmB,OAAA;AAC5B,kEAAiE;AAAxD,gHAAA,cAAc,OAAA;AACvB,+DAGuC;AAFrC,8GAAA,aAAa,OAAA;AAGf,6CAG2B;AAFzB,kGAAA,OAAO,OAAA;AAGT,sDAAsE;AAA7D,wGAAA,UAAU,OAAA;AACnB,iFAImD;AAHjD,0HAAA,mBAAmB,OAAA;AAEnB,iHAAA,UAAU,OAAA;AAEZ,8EAAoD;AACpD,sDAA4B;AAC5B,8DAAoC;AACpC,kCAA6D;AAApD,kGAAA,YAAY,OAAA;AAAE,sGAAA,gBAAgB,OAAA;AACvC,wDAA8B"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSearchFilterScopedVar = exports.containsSearchFilter = exports.SEARCH_FILTER_VARIABLE = exports.SqlDatasource = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const rxjs_1 = require("rxjs");
|
|
6
|
+
const operators_1 = require("rxjs/operators");
|
|
7
|
+
const data_1 = require("@grafana/data");
|
|
8
|
+
const runtime_1 = require("@grafana/runtime");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
// import { toTestingStatus } from '@grafana/runtime/utils/queryResponse';
|
|
11
|
+
const types_1 = require("../components/QueryEditor/types");
|
|
12
|
+
class SqlDatasource extends runtime_1.DataSourceWithBackend {
|
|
13
|
+
constructor(instanceSettings, templateSrv = (0, runtime_1.getTemplateSrv)()) {
|
|
14
|
+
super(instanceSettings);
|
|
15
|
+
this.templateSrv = templateSrv;
|
|
16
|
+
this.annotations = {};
|
|
17
|
+
this.interpolateVariable = (value, variable) => {
|
|
18
|
+
if (typeof value === 'string') {
|
|
19
|
+
if (variable.multi || variable.includeAll) {
|
|
20
|
+
const result = this.getQueryModel().quoteLiteral(value);
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (typeof value === 'number') {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));
|
|
32
|
+
return quotedValues.join(',');
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
};
|
|
36
|
+
this.name = instanceSettings.name;
|
|
37
|
+
this.id = instanceSettings.id;
|
|
38
|
+
const settingsData = instanceSettings.jsonData || {};
|
|
39
|
+
this.interval = settingsData.timeInterval || '1m';
|
|
40
|
+
this.db = this.getDB();
|
|
41
|
+
}
|
|
42
|
+
interpolateVariablesInQueries(queries, scopedVars) {
|
|
43
|
+
let expandedQueries = queries;
|
|
44
|
+
if (queries && queries.length > 0) {
|
|
45
|
+
expandedQueries = queries.map((query) => {
|
|
46
|
+
const expandedQuery = Object.assign(Object.assign({}, query), { datasource: this.getRef(), rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable), rawQuery: true });
|
|
47
|
+
return expandedQuery;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return expandedQueries;
|
|
51
|
+
}
|
|
52
|
+
filterQuery(query) {
|
|
53
|
+
return !query.hide;
|
|
54
|
+
}
|
|
55
|
+
applyTemplateVariables(target, scopedVars) {
|
|
56
|
+
const queryModel = this.getQueryModel(target, this.templateSrv, scopedVars);
|
|
57
|
+
const rawSql = this.clean(queryModel.interpolate());
|
|
58
|
+
return {
|
|
59
|
+
refId: target.refId,
|
|
60
|
+
datasource: this.getRef(),
|
|
61
|
+
rawSql,
|
|
62
|
+
format: target.format,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
clean(value) {
|
|
66
|
+
return value.replace(/''/g, "'");
|
|
67
|
+
}
|
|
68
|
+
metricFindQuery(query, optionalOptions) {
|
|
69
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
const rawSql = this.templateSrv.replace(query, (0, exports.getSearchFilterScopedVar)({ query, wildcardChar: '%', options: optionalOptions }), this.interpolateVariable);
|
|
71
|
+
const interpolatedQuery = {
|
|
72
|
+
refId: 'tempvar',
|
|
73
|
+
datasource: this.getRef(),
|
|
74
|
+
rawSql,
|
|
75
|
+
format: types_1.QueryFormat.Table,
|
|
76
|
+
};
|
|
77
|
+
const response = yield this.runMetaQuery(interpolatedQuery, optionalOptions);
|
|
78
|
+
return this.getResponseParser().transformMetricFindResponse(response);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
runSql(query, options) {
|
|
82
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
const frame = yield this.runMetaQuery({ rawSql: query, format: types_1.QueryFormat.Table, refId: options === null || options === void 0 ? void 0 : options.refId }, options);
|
|
84
|
+
return new data_1.DataFrameView(frame);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
runMetaQuery(request, options) {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
const refId = request.refId || 'meta';
|
|
90
|
+
const queries = [Object.assign(Object.assign({}, request), { datasource: request.datasource || this.getRef(), refId })];
|
|
91
|
+
return (0, rxjs_1.lastValueFrom)((0, runtime_1.getBackendSrv)()
|
|
92
|
+
.fetch({
|
|
93
|
+
url: '/api/ds/query',
|
|
94
|
+
method: 'POST',
|
|
95
|
+
data: {
|
|
96
|
+
from: (_a = options === null || options === void 0 ? void 0 : options.range) === null || _a === void 0 ? void 0 : _a.from.valueOf().toString(),
|
|
97
|
+
to: (_b = options === null || options === void 0 ? void 0 : options.range) === null || _b === void 0 ? void 0 : _b.to.valueOf().toString(),
|
|
98
|
+
queries,
|
|
99
|
+
},
|
|
100
|
+
requestId: refId,
|
|
101
|
+
})
|
|
102
|
+
.pipe((0, operators_1.map)((res) => {
|
|
103
|
+
const rsp = (0, runtime_1.toDataQueryResponse)(res, queries);
|
|
104
|
+
return rsp.data[0];
|
|
105
|
+
})));
|
|
106
|
+
}
|
|
107
|
+
testDatasource() {
|
|
108
|
+
return (0, rxjs_1.lastValueFrom)((0, runtime_1.getBackendSrv)()
|
|
109
|
+
.fetch({
|
|
110
|
+
url: '/api/ds/query',
|
|
111
|
+
method: 'POST',
|
|
112
|
+
data: {
|
|
113
|
+
from: '5m',
|
|
114
|
+
to: 'now',
|
|
115
|
+
queries: [
|
|
116
|
+
{
|
|
117
|
+
refId: 'A',
|
|
118
|
+
intervalMs: 1,
|
|
119
|
+
maxDataPoints: 1,
|
|
120
|
+
datasource: this.getRef(),
|
|
121
|
+
datasourceId: this.id,
|
|
122
|
+
rawSql: 'SELECT 1',
|
|
123
|
+
format: 'table',
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
})
|
|
128
|
+
.pipe((0, operators_1.map)(() => ({ status: 'success', message: 'Database Connection OK' })), (0, operators_1.catchError)((err) => {
|
|
129
|
+
// return of(toTestingStatus(err));
|
|
130
|
+
return (0, rxjs_1.of)(err);
|
|
131
|
+
})));
|
|
132
|
+
}
|
|
133
|
+
targetContainsTemplate(target) {
|
|
134
|
+
let queryWithoutMacros = target.rawSql;
|
|
135
|
+
constants_1.MACRO_NAMES.forEach((value) => {
|
|
136
|
+
queryWithoutMacros = (queryWithoutMacros === null || queryWithoutMacros === void 0 ? void 0 : queryWithoutMacros.replace(value, '')) || '';
|
|
137
|
+
});
|
|
138
|
+
return this.templateSrv.containsTemplate(queryWithoutMacros);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.SqlDatasource = SqlDatasource;
|
|
142
|
+
exports.SEARCH_FILTER_VARIABLE = '__searchFilter';
|
|
143
|
+
const containsSearchFilter = (query) => query && typeof query === 'string' ? query.indexOf(exports.SEARCH_FILTER_VARIABLE) !== -1 : false;
|
|
144
|
+
exports.containsSearchFilter = containsSearchFilter;
|
|
145
|
+
const getSearchFilterScopedVar = (args) => {
|
|
146
|
+
const { query, wildcardChar } = args;
|
|
147
|
+
if (!(0, exports.containsSearchFilter)(query)) {
|
|
148
|
+
return {};
|
|
149
|
+
}
|
|
150
|
+
let { options } = args;
|
|
151
|
+
options = options || { searchFilter: '' };
|
|
152
|
+
const value = options.searchFilter ? `${options.searchFilter}${wildcardChar}` : `${wildcardChar}`;
|
|
153
|
+
return {
|
|
154
|
+
__searchFilter: {
|
|
155
|
+
value,
|
|
156
|
+
text: '',
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
exports.getSearchFilterScopedVar = getSearchFilterScopedVar;
|
|
161
|
+
//# sourceMappingURL=SqlDatasource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqlDatasource.js","sourceRoot":"","sources":["../../src/datasource/SqlDatasource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MACRO_NAMES = void 0;
|
|
4
|
+
exports.MACRO_NAMES = [
|
|
5
|
+
'$__time',
|
|
6
|
+
'$__timeEpoch',
|
|
7
|
+
'$__timeFilter',
|
|
8
|
+
'$__timeFrom',
|
|
9
|
+
'$__timeTo',
|
|
10
|
+
'$__timeGroup',
|
|
11
|
+
'$__timeGroupAlias',
|
|
12
|
+
'$__unixEpochFilter',
|
|
13
|
+
'$__unixEpochNanoFilter',
|
|
14
|
+
'$__unixEpochNanoFrom',
|
|
15
|
+
'$__unixEpochNanoTo',
|
|
16
|
+
'$__unixEpochGroup',
|
|
17
|
+
'$__unixEpochGroupAlias',
|
|
18
|
+
];
|
|
19
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/datasource/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,SAAS;IACT,cAAc;IACd,eAAe;IACf,aAAa;IACb,WAAW;IACX,cAAc;IACd,mBAAmB;IACnB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;CACzB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useDebounce = exports.DEFAULT_DELAY = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
exports.DEFAULT_DELAY = 275;
|
|
6
|
+
const useDebounce = (value, delay = exports.DEFAULT_DELAY) => {
|
|
7
|
+
const [debouncedValue, setDebouncedValue] = (0, react_1.useState)(value);
|
|
8
|
+
(0, react_1.useEffect)(() => {
|
|
9
|
+
const handler = setTimeout(() => {
|
|
10
|
+
setDebouncedValue(value);
|
|
11
|
+
}, delay);
|
|
12
|
+
return () => {
|
|
13
|
+
clearTimeout(handler);
|
|
14
|
+
};
|
|
15
|
+
}, [value]);
|
|
16
|
+
return debouncedValue;
|
|
17
|
+
};
|
|
18
|
+
exports.useDebounce = useDebounce;
|
|
19
|
+
//# sourceMappingURL=useDebounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebounce.js","sourceRoot":"","sources":["../../src/hooks/useDebounce.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAE/B,QAAA,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,WAAW,GAAG,CAAI,KAAQ,EAAE,QAAgB,qBAAa,EAAE,EAAE;IACxE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE5D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAdW,QAAA,WAAW,eActB"}
|