@grafana/sql 0.0.0 → 13.0.0-23483592685
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/CHANGELOG.md +3 -0
- package/README.md +10 -0
- package/dist/cjs/ResponseParser.cjs +29 -0
- package/dist/cjs/ResponseParser.cjs.map +1 -0
- package/dist/cjs/SQLVariableEditor.cjs +86 -0
- package/dist/cjs/SQLVariableEditor.cjs.map +1 -0
- package/dist/cjs/SQLVariableSupport.cjs +40 -0
- package/dist/cjs/SQLVariableSupport.cjs.map +1 -0
- package/dist/cjs/SQLVariableUtils.cjs +75 -0
- package/dist/cjs/SQLVariableUtils.cjs.map +1 -0
- package/dist/cjs/components/ConfirmModal.cjs +56 -0
- package/dist/cjs/components/ConfirmModal.cjs.map +1 -0
- package/dist/cjs/components/DatasetSelector.cjs +48 -0
- package/dist/cjs/components/DatasetSelector.cjs.map +1 -0
- package/dist/cjs/components/QueryEditor.cjs +124 -0
- package/dist/cjs/components/QueryEditor.cjs.map +1 -0
- package/dist/cjs/components/QueryEditorLazy.cjs +44 -0
- package/dist/cjs/components/QueryEditorLazy.cjs.map +1 -0
- package/dist/cjs/components/QueryHeader.cjs +294 -0
- package/dist/cjs/components/QueryHeader.cjs.map +1 -0
- package/dist/cjs/components/TableSelector.cjs +41 -0
- package/dist/cjs/components/TableSelector.cjs.map +1 -0
- package/dist/cjs/components/configuration/ConnectionLimits.cjs +162 -0
- package/dist/cjs/components/configuration/ConnectionLimits.cjs.map +1 -0
- package/dist/cjs/components/configuration/Divider.cjs +25 -0
- package/dist/cjs/components/configuration/Divider.cjs.map +1 -0
- package/dist/cjs/components/configuration/MaxLifetimeField.cjs +41 -0
- package/dist/cjs/components/configuration/MaxLifetimeField.cjs.map +1 -0
- package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs +53 -0
- package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs.map +1 -0
- package/dist/cjs/components/configuration/NumberInput.cjs +37 -0
- package/dist/cjs/components/configuration/NumberInput.cjs.map +1 -0
- package/dist/cjs/components/configuration/TLSSecretsConfig.cjs +106 -0
- package/dist/cjs/components/configuration/TLSSecretsConfig.cjs.map +1 -0
- package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs +52 -0
- package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs +40 -0
- package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs +108 -0
- package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/QueryValidator.cjs +100 -0
- package/dist/cjs/components/query-editor-raw/QueryValidator.cjs.map +1 -0
- package/dist/cjs/components/query-editor-raw/RawEditor.cjs +116 -0
- package/dist/cjs/components/query-editor-raw/RawEditor.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs +273 -0
- package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/GroupByRow.cjs +69 -0
- package/dist/cjs/components/visual-query-builder/GroupByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/OrderByRow.cjs +82 -0
- package/dist/cjs/components/visual-query-builder/OrderByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/Preview.cjs +55 -0
- package/dist/cjs/components/visual-query-builder/Preview.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs +18 -0
- package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs +18 -0
- package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs +56 -0
- package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectColumn.cjs +30 -0
- package/dist/cjs/components/visual-query-builder/SelectColumn.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs +135 -0
- package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs +142 -0
- package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/SelectRow.cjs +184 -0
- package/dist/cjs/components/visual-query-builder/SelectRow.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/VisualEditor.cjs +43 -0
- package/dist/cjs/components/visual-query-builder/VisualEditor.cjs.map +1 -0
- package/dist/cjs/components/visual-query-builder/WhereRow.cjs +84 -0
- package/dist/cjs/components/visual-query-builder/WhereRow.cjs.map +1 -0
- package/dist/cjs/constants.cjs +77 -0
- package/dist/cjs/constants.cjs.map +1 -0
- package/dist/cjs/datasource/SqlDatasource.cjs +188 -0
- package/dist/cjs/datasource/SqlDatasource.cjs.map +1 -0
- package/dist/cjs/defaults.cjs +32 -0
- package/dist/cjs/defaults.cjs.map +1 -0
- package/dist/cjs/expressions.cjs +23 -0
- package/dist/cjs/expressions.cjs.map +1 -0
- package/dist/cjs/index.cjs +48 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/loadResources.cjs +49 -0
- package/dist/cjs/loadResources.cjs.map +1 -0
- package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/cs-CZ/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/de-DE/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/de-DE/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/en-US/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/en-US/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/es-ES/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/es-ES/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/fr-FR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/hu-HU/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/id-ID/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/id-ID/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/it-IT/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/it-IT/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/ja-JP/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/ko-KR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/nl-NL/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/pl-PL/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/pt-BR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/pt-PT/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/ru-RU/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/sv-SE/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/tr-TR/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/zh-Hans/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs +165 -0
- package/dist/cjs/locales/zh-Hant/grafana-sql.json.cjs.map +1 -0
- package/dist/cjs/types.cjs +24 -0
- package/dist/cjs/types.cjs.map +1 -0
- package/dist/cjs/utils/formatSQL.cjs +19 -0
- package/dist/cjs/utils/formatSQL.cjs.map +1 -0
- package/dist/cjs/utils/getColumnsWithIndices.cjs +33 -0
- package/dist/cjs/utils/getColumnsWithIndices.cjs.map +1 -0
- package/dist/cjs/utils/logging.cjs +11 -0
- package/dist/cjs/utils/logging.cjs.map +1 -0
- package/dist/cjs/utils/migration.cjs +24 -0
- package/dist/cjs/utils/migration.cjs.map +1 -0
- package/dist/cjs/utils/sql.utils.cjs +75 -0
- package/dist/cjs/utils/sql.utils.cjs.map +1 -0
- package/dist/cjs/utils/testHelpers.cjs +31 -0
- package/dist/cjs/utils/testHelpers.cjs.map +1 -0
- package/dist/cjs/utils/useSqlChange.cjs +22 -0
- package/dist/cjs/utils/useSqlChange.cjs.map +1 -0
- package/dist/esm/ResponseParser.mjs +25 -0
- package/dist/esm/ResponseParser.mjs.map +1 -0
- package/dist/esm/SQLVariableEditor.mjs +82 -0
- package/dist/esm/SQLVariableEditor.mjs.map +1 -0
- package/dist/esm/SQLVariableSupport.mjs +36 -0
- package/dist/esm/SQLVariableSupport.mjs.map +1 -0
- package/dist/esm/SQLVariableUtils.mjs +68 -0
- package/dist/esm/SQLVariableUtils.mjs.map +1 -0
- package/dist/esm/components/ConfirmModal.mjs +52 -0
- package/dist/esm/components/ConfirmModal.mjs.map +1 -0
- package/dist/esm/components/DatasetSelector.mjs +44 -0
- package/dist/esm/components/DatasetSelector.mjs.map +1 -0
- package/dist/esm/components/QueryEditor.mjs +122 -0
- package/dist/esm/components/QueryEditor.mjs.map +1 -0
- package/dist/esm/components/QueryEditorLazy.mjs +38 -0
- package/dist/esm/components/QueryEditorLazy.mjs.map +1 -0
- package/dist/esm/components/QueryHeader.mjs +290 -0
- package/dist/esm/components/QueryHeader.mjs.map +1 -0
- package/dist/esm/components/TableSelector.mjs +37 -0
- package/dist/esm/components/TableSelector.mjs.map +1 -0
- package/dist/esm/components/configuration/ConnectionLimits.mjs +158 -0
- package/dist/esm/components/configuration/ConnectionLimits.mjs.map +1 -0
- package/dist/esm/components/configuration/Divider.mjs +21 -0
- package/dist/esm/components/configuration/Divider.mjs.map +1 -0
- package/dist/esm/components/configuration/MaxLifetimeField.mjs +37 -0
- package/dist/esm/components/configuration/MaxLifetimeField.mjs.map +1 -0
- package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs +49 -0
- package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs.map +1 -0
- package/dist/esm/components/configuration/NumberInput.mjs +33 -0
- package/dist/esm/components/configuration/NumberInput.mjs.map +1 -0
- package/dist/esm/components/configuration/TLSSecretsConfig.mjs +102 -0
- package/dist/esm/components/configuration/TLSSecretsConfig.mjs.map +1 -0
- package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs +48 -0
- package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs +36 -0
- package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/QueryToolbox.mjs +104 -0
- package/dist/esm/components/query-editor-raw/QueryToolbox.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/QueryValidator.mjs +96 -0
- package/dist/esm/components/query-editor-raw/QueryValidator.mjs.map +1 -0
- package/dist/esm/components/query-editor-raw/RawEditor.mjs +108 -0
- package/dist/esm/components/query-editor-raw/RawEditor.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs +266 -0
- package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/GroupByRow.mjs +65 -0
- package/dist/esm/components/visual-query-builder/GroupByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/OrderByRow.mjs +78 -0
- package/dist/esm/components/visual-query-builder/OrderByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/Preview.mjs +51 -0
- package/dist/esm/components/visual-query-builder/Preview.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs +14 -0
- package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs +14 -0
- package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs +51 -0
- package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectColumn.mjs +26 -0
- package/dist/esm/components/visual-query-builder/SelectColumn.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs +131 -0
- package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs +138 -0
- package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/SelectRow.mjs +180 -0
- package/dist/esm/components/visual-query-builder/SelectRow.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/VisualEditor.mjs +39 -0
- package/dist/esm/components/visual-query-builder/VisualEditor.mjs.map +1 -0
- package/dist/esm/components/visual-query-builder/WhereRow.mjs +80 -0
- package/dist/esm/components/visual-query-builder/WhereRow.mjs.map +1 -0
- package/dist/esm/constants.mjs +71 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/datasource/SqlDatasource.mjs +184 -0
- package/dist/esm/datasource/SqlDatasource.mjs.map +1 -0
- package/dist/esm/defaults.mjs +28 -0
- package/dist/esm/defaults.mjs.map +1 -0
- package/dist/esm/expressions.mjs +18 -0
- package/dist/esm/expressions.mjs.map +1 -0
- package/dist/esm/index.mjs +22 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/loadResources.mjs +43 -0
- package/dist/esm/loadResources.mjs.map +1 -0
- package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/cs-CZ/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/de-DE/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/de-DE/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/en-US/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/en-US/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/es-ES/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/es-ES/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/fr-FR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/fr-FR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/hu-HU/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/hu-HU/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/id-ID/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/id-ID/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/it-IT/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/it-IT/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/ja-JP/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/ja-JP/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/ko-KR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/ko-KR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/nl-NL/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/nl-NL/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/pl-PL/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/pl-PL/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/pt-BR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/pt-BR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/pt-PT/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/pt-PT/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/ru-RU/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/ru-RU/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/sv-SE/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/sv-SE/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/tr-TR/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/tr-TR/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/zh-Hans/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs +163 -0
- package/dist/esm/locales/zh-Hant/grafana-sql.json.mjs.map +1 -0
- package/dist/esm/types.mjs +18 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/utils/formatSQL.mjs +11 -0
- package/dist/esm/utils/formatSQL.mjs.map +1 -0
- package/dist/esm/utils/getColumnsWithIndices.mjs +29 -0
- package/dist/esm/utils/getColumnsWithIndices.mjs.map +1 -0
- package/dist/esm/utils/logging.mjs +7 -0
- package/dist/esm/utils/logging.mjs.map +1 -0
- package/dist/esm/utils/migration.mjs +22 -0
- package/dist/esm/utils/migration.mjs.map +1 -0
- package/dist/esm/utils/sql.utils.mjs +66 -0
- package/dist/esm/utils/sql.utils.mjs.map +1 -0
- package/dist/esm/utils/testHelpers.mjs +27 -0
- package/dist/esm/utils/testHelpers.mjs.map +1 -0
- package/dist/esm/utils/useSqlChange.mjs +18 -0
- package/dist/esm/utils/useSqlChange.mjs.map +1 -0
- package/dist/types/ResponseParser.d.ts +5 -0
- package/dist/types/SQLVariableEditor.d.ts +5 -0
- package/dist/types/SQLVariableSupport.d.ts +11 -0
- package/dist/types/SQLVariableUtils.d.ts +6 -0
- package/dist/types/components/ConfirmModal.d.ts +8 -0
- package/dist/types/components/DatasetSelector.d.ts +11 -0
- package/dist/types/components/ErrorBoundary.d.ts +12 -0
- package/dist/types/components/QueryEditor.d.ts +8 -0
- package/dist/types/components/QueryEditorLazy.d.ts +2 -0
- package/dist/types/components/QueryHeader.d.ts +16 -0
- package/dist/types/components/SqlComponents.testHelpers.d.ts +65 -0
- package/dist/types/components/TableSelector.d.ts +10 -0
- package/dist/types/components/configuration/ConnectionLimits.d.ts +8 -0
- package/dist/types/components/configuration/Divider.d.ts +1 -0
- package/dist/types/components/configuration/MaxLifetimeField.d.ts +8 -0
- package/dist/types/components/configuration/MaxOpenConnectionsField.d.ts +8 -0
- package/dist/types/components/configuration/NumberInput.d.ts +8 -0
- package/dist/types/components/configuration/TLSSecretsConfig.d.ts +9 -0
- package/dist/types/components/configuration/useMigrateDatabaseFields.d.ts +7 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/query-editor-raw/QueryEditorRaw.d.ts +15 -0
- package/dist/types/components/query-editor-raw/QueryToolbox.d.ts +10 -0
- package/dist/types/components/query-editor-raw/QueryValidator.d.ts +9 -0
- package/dist/types/components/query-editor-raw/RawEditor.d.ts +9 -0
- package/dist/types/components/visual-query-builder/AwesomeQueryBuilder.d.ts +6 -0
- package/dist/types/components/visual-query-builder/GroupByRow.d.ts +9 -0
- package/dist/types/components/visual-query-builder/OrderByRow.d.ts +10 -0
- package/dist/types/components/visual-query-builder/Preview.d.ts +6 -0
- package/dist/types/components/visual-query-builder/SQLGroupByRow.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SQLOrderByRow.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SQLWhereRow.d.ts +12 -0
- package/dist/types/components/visual-query-builder/SelectColumn.d.ts +8 -0
- package/dist/types/components/visual-query-builder/SelectCustomFunctionParameters.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SelectFunctionParameters.d.ts +11 -0
- package/dist/types/components/visual-query-builder/SelectRow.d.ts +10 -0
- package/dist/types/components/visual-query-builder/VisualEditor.d.ts +8 -0
- package/dist/types/components/visual-query-builder/WhereRow.d.ts +9 -0
- package/dist/types/components/visual-query-builder/index.d.ts +1 -0
- package/dist/types/constants.d.ts +12 -0
- package/dist/types/datasource/SqlDatasource.d.ts +38 -0
- package/dist/types/defaults.d.ts +3 -0
- package/dist/types/expressions.d.ts +51 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/loadResources.d.ts +2 -0
- package/dist/types/types.d.ts +152 -0
- package/dist/types/utils/formatSQL.d.ts +1 -0
- package/dist/types/utils/getColumnsWithIndices.d.ts +3 -0
- package/dist/types/utils/logging.d.ts +2 -0
- package/dist/types/utils/migration.d.ts +3 -0
- package/dist/types/utils/sql.utils.d.ts +21 -0
- package/dist/types/utils/testHelpers.d.ts +2 -0
- package/dist/types/utils/useSqlChange.d.ts +10 -0
- package/package.json +80 -4
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var css = require('@emotion/css');
|
|
7
|
+
var lodash = require('lodash');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var data = require('@grafana/data');
|
|
10
|
+
var e2eSelectors = require('@grafana/e2e-selectors');
|
|
11
|
+
var i18n = require('@grafana/i18n');
|
|
12
|
+
var pluginUi = require('@grafana/plugin-ui');
|
|
13
|
+
var ui = require('@grafana/ui');
|
|
14
|
+
var expressions = require('../../expressions.cjs');
|
|
15
|
+
var types = require('../../types.cjs');
|
|
16
|
+
var sql_utils = require('../../utils/sql.utils.cjs');
|
|
17
|
+
var useSqlChange = require('../../utils/useSqlChange.cjs');
|
|
18
|
+
var SelectFunctionParameters = require('./SelectFunctionParameters.cjs');
|
|
19
|
+
|
|
20
|
+
"use strict";
|
|
21
|
+
function SelectRow({ query, onQueryChange, db, columns }) {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
const styles = ui.useStyles2(getStyles);
|
|
24
|
+
const { onSqlChange } = useSqlChange.useSqlChange({ query, onQueryChange, db });
|
|
25
|
+
const timeSeriesAliasOpts = [];
|
|
26
|
+
if (query.format === types.QueryFormat.Timeseries) {
|
|
27
|
+
timeSeriesAliasOpts.push({ label: i18n.t("grafana-sql.components.select-row.label.time", "time"), value: "time" });
|
|
28
|
+
timeSeriesAliasOpts.push({ label: i18n.t("grafana-sql.components.select-row.label.value", "value"), value: "value" });
|
|
29
|
+
}
|
|
30
|
+
const onAggregationChange = react.useCallback(
|
|
31
|
+
(item, index) => (aggregation) => {
|
|
32
|
+
var _a2, _b2, _c, _d;
|
|
33
|
+
const newItem = {
|
|
34
|
+
...item,
|
|
35
|
+
name: aggregation == null ? void 0 : aggregation.value,
|
|
36
|
+
parameters: [
|
|
37
|
+
{ type: expressions.QueryEditorExpressionType.FunctionParameter, name: ((_b2 = (_a2 = item.parameters) == null ? void 0 : _a2[0]) == null ? void 0 : _b2.name) || "" }
|
|
38
|
+
]
|
|
39
|
+
};
|
|
40
|
+
const newSql = {
|
|
41
|
+
...query.sql,
|
|
42
|
+
columns: (_d = (_c = query.sql) == null ? void 0 : _c.columns) == null ? void 0 : _d.map((c, i) => i === index ? newItem : c)
|
|
43
|
+
};
|
|
44
|
+
onSqlChange(newSql);
|
|
45
|
+
},
|
|
46
|
+
[onSqlChange, query.sql]
|
|
47
|
+
);
|
|
48
|
+
const onAliasChange = react.useCallback(
|
|
49
|
+
(item, index) => (alias) => {
|
|
50
|
+
var _a2, _b2, _c;
|
|
51
|
+
let newItem = { ...item };
|
|
52
|
+
if (alias !== null) {
|
|
53
|
+
newItem = { ...item, alias: `"${(_a2 = alias == null ? void 0 : alias.value) == null ? void 0 : _a2.trim()}"` };
|
|
54
|
+
} else {
|
|
55
|
+
delete newItem.alias;
|
|
56
|
+
}
|
|
57
|
+
const newSql = {
|
|
58
|
+
...query.sql,
|
|
59
|
+
columns: (_c = (_b2 = query.sql) == null ? void 0 : _b2.columns) == null ? void 0 : _c.map((c, i) => i === index ? newItem : c)
|
|
60
|
+
};
|
|
61
|
+
onSqlChange(newSql);
|
|
62
|
+
},
|
|
63
|
+
[onSqlChange, query.sql]
|
|
64
|
+
);
|
|
65
|
+
const removeColumn = react.useCallback(
|
|
66
|
+
(index) => () => {
|
|
67
|
+
var _a2;
|
|
68
|
+
const clone = [...((_a2 = query.sql) == null ? void 0 : _a2.columns) || []];
|
|
69
|
+
clone.splice(index, 1);
|
|
70
|
+
const newSql = {
|
|
71
|
+
...query.sql,
|
|
72
|
+
columns: clone
|
|
73
|
+
};
|
|
74
|
+
onSqlChange(newSql);
|
|
75
|
+
},
|
|
76
|
+
[onSqlChange, query.sql]
|
|
77
|
+
);
|
|
78
|
+
const addColumn = react.useCallback(() => {
|
|
79
|
+
var _a2;
|
|
80
|
+
const newSql = { ...query.sql, columns: [...((_a2 = query.sql) == null ? void 0 : _a2.columns) || [], sql_utils.createFunctionField()] };
|
|
81
|
+
onSqlChange(newSql);
|
|
82
|
+
}, [onSqlChange, query.sql]);
|
|
83
|
+
const aggregateOptions = () => {
|
|
84
|
+
const options = [
|
|
85
|
+
{
|
|
86
|
+
label: i18n.t("grafana-sql.components.select-row.aggregate-options.options.label.aggregations", "Aggregations"),
|
|
87
|
+
options: []
|
|
88
|
+
},
|
|
89
|
+
{ label: i18n.t("grafana-sql.components.select-row.aggregate-options.options.label.macros", "Macros"), options: [] }
|
|
90
|
+
];
|
|
91
|
+
for (const func of db.functions()) {
|
|
92
|
+
if (func.name.startsWith("$__")) {
|
|
93
|
+
options[1].options.push({ label: func.name, value: func.name });
|
|
94
|
+
} else {
|
|
95
|
+
options[0].options.push({ label: func.name, value: func.name });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return options;
|
|
99
|
+
};
|
|
100
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 2, wrap: "wrap", direction: "column", children: [
|
|
101
|
+
(_b = (_a = query.sql) == null ? void 0 : _a.columns) == null ? void 0 : _b.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Stack, { gap: 2, alignItems: "end", children: [
|
|
102
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
103
|
+
pluginUi.EditorField,
|
|
104
|
+
{
|
|
105
|
+
label: i18n.t("grafana-sql.components.select-row.label-data-operations", "Data operations"),
|
|
106
|
+
optional: true,
|
|
107
|
+
width: 25,
|
|
108
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
+
ui.Select,
|
|
110
|
+
{
|
|
111
|
+
value: item.name ? data.toOption(item.name) : null,
|
|
112
|
+
inputId: `select-aggregation-${index}-${lodash.uniqueId()}`,
|
|
113
|
+
"data-testid": e2eSelectors.selectors.components.SQLQueryEditor.selectAggregation,
|
|
114
|
+
isClearable: true,
|
|
115
|
+
menuShouldPortal: true,
|
|
116
|
+
allowCustomValue: true,
|
|
117
|
+
options: aggregateOptions(),
|
|
118
|
+
onChange: onAggregationChange(item, index)
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
),
|
|
123
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
124
|
+
SelectFunctionParameters.SelectFunctionParameters,
|
|
125
|
+
{
|
|
126
|
+
currentColumnIndex: index,
|
|
127
|
+
columns,
|
|
128
|
+
onSqlChange,
|
|
129
|
+
query,
|
|
130
|
+
db
|
|
131
|
+
}
|
|
132
|
+
),
|
|
133
|
+
/* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.select-row.label-alias", "Alias"), optional: true, width: 15, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
+
ui.Select,
|
|
135
|
+
{
|
|
136
|
+
value: item.alias ? data.toOption(item.alias) : null,
|
|
137
|
+
inputId: `select-alias-${index}-${lodash.uniqueId()}`,
|
|
138
|
+
"data-testid": e2eSelectors.selectors.components.SQLQueryEditor.selectAlias,
|
|
139
|
+
options: timeSeriesAliasOpts,
|
|
140
|
+
onChange: onAliasChange(item, index),
|
|
141
|
+
isClearable: true,
|
|
142
|
+
menuShouldPortal: true,
|
|
143
|
+
allowCustomValue: true
|
|
144
|
+
}
|
|
145
|
+
) }),
|
|
146
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
147
|
+
ui.Button,
|
|
148
|
+
{
|
|
149
|
+
"aria-label": i18n.t("grafana-sql.components.select-row.title-remove-column", "Remove column"),
|
|
150
|
+
type: "button",
|
|
151
|
+
icon: "trash-alt",
|
|
152
|
+
variant: "secondary",
|
|
153
|
+
size: "md",
|
|
154
|
+
onClick: removeColumn(index)
|
|
155
|
+
}
|
|
156
|
+
)
|
|
157
|
+
] }) }, index)),
|
|
158
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
159
|
+
ui.Button,
|
|
160
|
+
{
|
|
161
|
+
type: "button",
|
|
162
|
+
onClick: addColumn,
|
|
163
|
+
variant: "secondary",
|
|
164
|
+
"aria-label": i18n.t("grafana-sql.components.select-row.title-add-column", "Add column"),
|
|
165
|
+
size: "md",
|
|
166
|
+
icon: "plus",
|
|
167
|
+
className: styles.addButton
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
] });
|
|
171
|
+
}
|
|
172
|
+
const getStyles = () => {
|
|
173
|
+
return {
|
|
174
|
+
addButton: css.css({ alignSelf: "flex-start" }),
|
|
175
|
+
label: css.css({
|
|
176
|
+
padding: 0,
|
|
177
|
+
margin: 0,
|
|
178
|
+
width: "unset"
|
|
179
|
+
})
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
exports.SelectRow = SelectRow;
|
|
184
|
+
//# sourceMappingURL=SelectRow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectRow.cjs","sources":["../../../../src/components/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { Button, Select, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType, QueryEditorFunctionExpression } from '../../expressions';\nimport { DB, QueryFormat, SQLExpression, SQLQuery } from '../../types';\nimport { createFunctionField } from '../../utils/sql.utils';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { SelectFunctionParameters } from './SelectFunctionParameters';\n\ninterface SelectRowProps {\n query: SQLQuery;\n onQueryChange: (sql: SQLQuery) => void;\n db: DB;\n columns: Array<SelectableValue<string>>;\n}\n\nexport function SelectRow({ query, onQueryChange, db, columns }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n const timeSeriesAliasOpts: Array<SelectableValue<string>> = [];\n\n // Add necessary alias options for time series format\n // when that format has been selected\n if (query.format === QueryFormat.Timeseries) {\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.time', 'time'), value: 'time' });\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.value', 'value'), value: 'value' });\n }\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n parameters: [\n { type: QueryEditorExpressionType.FunctionParameter as const, name: item.parameters?.[0]?.name || '' },\n ],\n };\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const onAliasChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (alias: SelectableValue<string>) => {\n let newItem = { ...item };\n\n if (alias !== null) {\n newItem = { ...item, alias: `\"${alias?.value?.trim()}\"` };\n } else {\n delete newItem.alias;\n }\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...(query.sql?.columns || [])];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...query.sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...query.sql, columns: [...(query.sql?.columns || []), createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, query.sql]);\n\n const aggregateOptions = () => {\n const options: Array<SelectableValue<string>> = [\n {\n label: t('grafana-sql.components.select-row.aggregate-options.options.label.aggregations', 'Aggregations'),\n options: [],\n },\n { label: t('grafana-sql.components.select-row.aggregate-options.options.label.macros', 'Macros'), options: [] },\n ];\n for (const func of db.functions()) {\n // Create groups for macros\n if (func.name.startsWith('$__')) {\n options[1].options.push({ label: func.name, value: func.name });\n } else {\n options[0].options.push({ label: func.name, value: func.name });\n }\n }\n return options;\n };\n\n return (\n <Stack gap={2} wrap=\"wrap\" direction=\"column\">\n {query.sql?.columns?.map((item, index) => (\n <div key={index}>\n <Stack gap={2} alignItems=\"end\">\n <EditorField\n label={t('grafana-sql.components.select-row.label-data-operations', 'Data operations')}\n optional\n width={25}\n >\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAggregation}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={aggregateOptions()}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n\n <SelectFunctionParameters\n currentColumnIndex={index}\n columns={columns}\n onSqlChange={onSqlChange}\n query={query}\n db={db}\n />\n\n <EditorField label={t('grafana-sql.components.select-row.label-alias', 'Alias')} optional width={15}>\n <Select\n value={item.alias ? toOption(item.alias) : null}\n inputId={`select-alias-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAlias}\n options={timeSeriesAliasOpts}\n onChange={onAliasChange(item, index)}\n isClearable\n menuShouldPortal\n allowCustomValue\n />\n </EditorField>\n <Button\n aria-label={t('grafana-sql.components.select-row.title-remove-column', 'Remove column')}\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </Stack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n aria-label={t('grafana-sql.components.select-row.title-add-column', 'Add column')}\n size=\"md\"\n icon=\"plus\"\n className={styles.addButton}\n />\n </Stack>\n );\n}\n\nconst getStyles = () => {\n return {\n addButton: css({ alignSelf: 'flex-start' }),\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useStyles2","useSqlChange","QueryFormat","t","useCallback","_a","_b","QueryEditorExpressionType","createFunctionField","Stack","jsx","jsxs","EditorField","Select","toOption","uniqueId","selectors","SelectFunctionParameters","Button","css"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var reactUse = require('react-use');
|
|
7
|
+
var i18n = require('@grafana/i18n');
|
|
8
|
+
var pluginUi = require('@grafana/plugin-ui');
|
|
9
|
+
var QueryToolbox = require('../query-editor-raw/QueryToolbox.cjs');
|
|
10
|
+
var Preview = require('./Preview.cjs');
|
|
11
|
+
var SQLGroupByRow = require('./SQLGroupByRow.cjs');
|
|
12
|
+
var SQLOrderByRow = require('./SQLOrderByRow.cjs');
|
|
13
|
+
var SQLWhereRow = require('./SQLWhereRow.cjs');
|
|
14
|
+
var SelectRow = require('./SelectRow.cjs');
|
|
15
|
+
|
|
16
|
+
"use strict";
|
|
17
|
+
const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }) => {
|
|
18
|
+
var _a;
|
|
19
|
+
const state = reactUse.useAsync(async () => {
|
|
20
|
+
const fields = await db.fields(query);
|
|
21
|
+
return fields;
|
|
22
|
+
}, [db, query.dataset, query.table]);
|
|
23
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24
|
+
/* @__PURE__ */ jsxRuntime.jsxs(pluginUi.EditorRows, { children: [
|
|
25
|
+
/* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(SelectRow.SelectRow, { columns: state.value || [], query, onQueryChange: onChange, db }) }),
|
|
26
|
+
queryRowFilter.filter && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27
|
+
pluginUi.EditorField,
|
|
28
|
+
{
|
|
29
|
+
label: i18n.t("grafana-sql.components.visual-editor.label-filter-by-column-value", "Filter by column value"),
|
|
30
|
+
optional: true,
|
|
31
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SQLWhereRow.SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db })
|
|
32
|
+
}
|
|
33
|
+
) }),
|
|
34
|
+
queryRowFilter.group && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorField, { label: i18n.t("grafana-sql.components.visual-editor.label-group-by-column", "Group by column"), children: /* @__PURE__ */ jsxRuntime.jsx(SQLGroupByRow.SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }) }) }),
|
|
35
|
+
queryRowFilter.order && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(SQLOrderByRow.SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db }) }),
|
|
36
|
+
queryRowFilter.preview && query.rawSql && /* @__PURE__ */ jsxRuntime.jsx(pluginUi.EditorRow, { children: /* @__PURE__ */ jsxRuntime.jsx(Preview.Preview, { rawSql: query.rawSql, datasourceType: (_a = query.datasource) == null ? void 0 : _a.type }) })
|
|
37
|
+
] }),
|
|
38
|
+
/* @__PURE__ */ jsxRuntime.jsx(QueryToolbox.QueryToolbox, { db, query, onValidate, range })
|
|
39
|
+
] });
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
exports.VisualEditor = VisualEditor;
|
|
43
|
+
//# sourceMappingURL=VisualEditor.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisualEditor.cjs","sources":["../../../../src/components/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { t } from '@grafana/i18n';\nimport { EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';\n\nimport { DB, QueryEditorProps, QueryRowFilter } from '../../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\n\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { SelectRow } from './SelectRow';\n\ninterface VisualEditorProps extends QueryEditorProps {\n db: DB;\n queryRowFilter: QueryRowFilter;\n onValidate: (isValid: boolean) => void;\n}\n\nexport const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }: VisualEditorProps) => {\n const state = useAsync(async () => {\n const fields = await db.fields(query);\n return fields;\n }, [db, query.dataset, query.table]);\n\n return (\n <>\n <EditorRows>\n <EditorRow>\n <SelectRow columns={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField\n label={t('grafana-sql.components.visual-editor.label-filter-by-column-value', 'Filter by column value')}\n optional\n >\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label={t('grafana-sql.components.visual-editor.label-group-by-column', 'Group by column')}>\n <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.order && (\n <EditorRow>\n <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n )}\n {queryRowFilter.preview && query.rawSql && (\n <EditorRow>\n <Preview rawSql={query.rawSql} datasourceType={query.datasource?.type} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":["useAsync","jsxs","Fragment","EditorRows","jsx","EditorRow","SelectRow","EditorField","t","SQLWhereRow","SQLGroupByRow","SQLOrderByRow","Preview","QueryToolbox"],"mappings":";;;;;;;;;;;;;;;;AAoBO,MAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,IAAI,cAAA,EAAgB,QAAA,EAAU,UAAA,EAAY,KAAA,EAAM,KAAyB;AApB/G,EAAA,IAAA,EAAA;AAqBE,EAAA,MAAM,KAAA,GAAQA,kBAAS,YAAY;AACjC,IAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,OAAO,MAAA;AAAA,EACT,GAAG,CAAC,EAAA,EAAI,MAAM,OAAA,EAAS,KAAA,CAAM,KAAK,CAAC,CAAA;AAEnC,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAACE,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,mBAAA,EAAA,EAAU,OAAA,EAAS,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EACxF,CAAA;AAAA,MACC,cAAA,CAAe,MAAA,oBACdF,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,QAACG,oBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAOC,MAAA,CAAE,mEAAA,EAAqE,wBAAwB,CAAA;AAAA,UACtG,QAAA,EAAQ,IAAA;AAAA,UAER,QAAA,kBAAAJ,cAAA,CAACK,uBAAA,EAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ;AAAA;AAAA,OACzF,EACF,CAAA;AAAA,MAED,cAAA,CAAe,yBACdL,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACE,oBAAA,EAAA,EAAY,KAAA,EAAOC,MAAA,CAAE,4DAAA,EAA8D,iBAAiB,CAAA,EACnG,yCAACE,2BAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,OAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EAC3F,CAAA,EACF,CAAA;AAAA,MAED,cAAA,CAAe,KAAA,oBACdN,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACM,2BAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,IAAQ,CAAA,EAC3F,CAAA;AAAA,MAED,eAAe,OAAA,IAAW,KAAA,CAAM,MAAA,oBAC/BP,cAAA,CAACC,sBACC,QAAA,kBAAAD,cAAA,CAACQ,eAAA,EAAA,EAAQ,MAAA,EAAQ,KAAA,CAAM,QAAQ,cAAA,EAAA,CAAgB,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,MAAM,CAAA,EACzE;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACAR,cAAA,CAACS,yBAAA,EAAA,EAAa,EAAA,EAAQ,KAAA,EAAc,YAAwB,KAAA,EAAc;AAAA,GAAA,EAC5E,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
var css = require('@emotion/css');
|
|
7
|
+
var ui = require('@react-awesome-query-builder/ui');
|
|
8
|
+
var react = require('react');
|
|
9
|
+
var AwesomeQueryBuilder = require('./AwesomeQueryBuilder.cjs');
|
|
10
|
+
|
|
11
|
+
"use strict";
|
|
12
|
+
function WhereRow({ sql, config, onSqlChange }) {
|
|
13
|
+
const [tree, setTree] = react.useState();
|
|
14
|
+
const configWithDefaults = react.useMemo(() => ({ ...AwesomeQueryBuilder.raqbConfig, ...config }), [config]);
|
|
15
|
+
react.useEffect(() => {
|
|
16
|
+
var _a;
|
|
17
|
+
if (!tree) {
|
|
18
|
+
const initTree = ui.Utils.checkTree(ui.Utils.loadTree((_a = sql.whereJsonTree) != null ? _a : AwesomeQueryBuilder.emptyInitTree), configWithDefaults);
|
|
19
|
+
setTree(initTree);
|
|
20
|
+
}
|
|
21
|
+
}, [configWithDefaults, sql.whereJsonTree, tree]);
|
|
22
|
+
react.useEffect(() => {
|
|
23
|
+
if (!sql.whereJsonTree) {
|
|
24
|
+
setTree(ui.Utils.checkTree(ui.Utils.loadTree(AwesomeQueryBuilder.emptyInitTree), configWithDefaults));
|
|
25
|
+
}
|
|
26
|
+
}, [configWithDefaults, sql.whereJsonTree]);
|
|
27
|
+
const onTreeChange = react.useCallback(
|
|
28
|
+
(changedTree, config2) => {
|
|
29
|
+
setTree(changedTree);
|
|
30
|
+
const newSql = {
|
|
31
|
+
...sql,
|
|
32
|
+
whereJsonTree: ui.Utils.getTree(changedTree),
|
|
33
|
+
whereString: ui.Utils.sqlFormat(changedTree, config2)
|
|
34
|
+
};
|
|
35
|
+
onSqlChange(newSql);
|
|
36
|
+
},
|
|
37
|
+
[onSqlChange, sql]
|
|
38
|
+
);
|
|
39
|
+
if (!tree) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
+
ui.Query,
|
|
44
|
+
{
|
|
45
|
+
...configWithDefaults,
|
|
46
|
+
value: tree,
|
|
47
|
+
onChange: onTreeChange,
|
|
48
|
+
renderBuilder: (props) => /* @__PURE__ */ jsxRuntime.jsx(ui.Builder, { ...props })
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
function flex(direction) {
|
|
53
|
+
return `
|
|
54
|
+
display: flex;
|
|
55
|
+
gap: 8px;
|
|
56
|
+
flex-direction: ${direction};`;
|
|
57
|
+
}
|
|
58
|
+
css.injectGlobal`
|
|
59
|
+
.group--header {
|
|
60
|
+
${flex("row")}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.group-or-rule {
|
|
64
|
+
${flex("column")}
|
|
65
|
+
.rule {
|
|
66
|
+
flex-direction: row;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.rule--body {
|
|
71
|
+
${flex("row")}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.group--children {
|
|
75
|
+
${flex("column")}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.group--conjunctions:empty {
|
|
79
|
+
display: none;
|
|
80
|
+
}
|
|
81
|
+
`;
|
|
82
|
+
|
|
83
|
+
exports.WhereRow = WhereRow;
|
|
84
|
+
//# sourceMappingURL=WhereRow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhereRow.cjs","sources":["../../../../src/components/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport { Builder, Config, ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { SQLExpression } from '../../types';\n\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n const [tree, setTree] = useState<ImmutableTree>();\n const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n useEffect(() => {\n // Set the initial tree\n if (!tree) {\n const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n setTree(initTree);\n }\n }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n useEffect(() => {\n if (!sql.whereJsonTree) {\n setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n }\n }, [configWithDefaults, sql.whereJsonTree]);\n\n const onTreeChange = useCallback(\n (changedTree: ImmutableTree, config: Config) => {\n setTree(changedTree);\n const newSql = {\n ...sql,\n whereJsonTree: Utils.getTree(changedTree),\n whereString: Utils.sqlFormat(changedTree, config),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n if (!tree) {\n return null;\n }\n\n return (\n <Query\n {...configWithDefaults}\n value={tree}\n onChange={onTreeChange}\n renderBuilder={(props) => <Builder {...props} />}\n />\n );\n}\n\nfunction flex(direction: string) {\n return `\n display: flex;\n gap: 8px;\n flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n .group--header {\n ${flex('row')}\n }\n\n .group-or-rule {\n ${flex('column')}\n .rule {\n flex-direction: row;\n }\n }\n\n .rule--body {\n ${flex('row')}\n }\n\n .group--children {\n ${flex('column')}\n }\n\n .group--conjunctions:empty {\n display: none;\n }\n`;\n"],"names":["useState","useMemo","raqbConfig","useEffect","Utils","emptyInitTree","useCallback","config","jsx","Query","Builder","injectGlobal"],"mappings":";;;;;;;;;;;AAcO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,cAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqBC,aAAA,CAAQ,OAAO,EAAE,GAAGC,8BAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAAC,eAAA,CAAU,MAAM;AAlBlB,IAAA,IAAA,EAAA;AAoBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAWC,QAAA,CAAM,SAAA,CAAUA,QAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqBC,iCAAa,CAAA,EAAG,kBAAkB,CAAA;AACvG,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAA,EAAe,IAAI,CAAC,CAAA;AAEhD,EAAAF,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQC,SAAM,SAAA,CAAUA,QAAA,CAAM,SAASC,iCAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAeC,iBAAA;AAAA,IACnB,CAAC,aAA4BC,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAeH,QAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAaA,QAAA,CAAM,SAAA,CAAU,WAAA,EAAaG,OAAM;AAAA,OAClD;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAUD,cAAA,CAACE,UAAA,EAAA,EAAS,GAAG,KAAA,EAAO;AAAA;AAAA,GAChD;AAEJ;AAEA,SAAS,KAAK,SAAA,EAAmB;AAC/B,EAAA,OAAO;AAAA;AAAA;AAAA,oBAAA,EAGa,SAAS,CAAA,CAAA,CAAA;AAC/B;AAGAC,gBAAA;AAAA;AAAA,IAAA,EAEM,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAAA,EAOd,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
"use strict";
|
|
6
|
+
const COMMON_FNS = [
|
|
7
|
+
{ name: "AVG" },
|
|
8
|
+
{ name: "COUNT" },
|
|
9
|
+
{ name: "MAX" },
|
|
10
|
+
{ name: "MIN" },
|
|
11
|
+
{ name: "SUM" }
|
|
12
|
+
];
|
|
13
|
+
const intervalParam = {
|
|
14
|
+
name: "Interval",
|
|
15
|
+
required: true,
|
|
16
|
+
options: () => {
|
|
17
|
+
return Promise.resolve([{ label: "$__interval", value: "$__interval" }]);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const fillParam = {
|
|
21
|
+
name: "Fill",
|
|
22
|
+
required: false,
|
|
23
|
+
options: () => Promise.resolve([
|
|
24
|
+
{ label: "0", value: "0" },
|
|
25
|
+
{ label: "NULL", value: "NULL" },
|
|
26
|
+
{ label: "previous", value: "previous" }
|
|
27
|
+
])
|
|
28
|
+
};
|
|
29
|
+
const MACRO_FUNCTIONS = (columnParam) => [
|
|
30
|
+
{
|
|
31
|
+
name: "$__timeGroup",
|
|
32
|
+
description: "Time grouping function",
|
|
33
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "$__timeGroupAlias",
|
|
37
|
+
description: "Time grouping function with time as alias",
|
|
38
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "$__time",
|
|
42
|
+
description: "An expression to rename the column to time",
|
|
43
|
+
parameters: [columnParam]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "$__timeEpoch",
|
|
47
|
+
parameters: [columnParam]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "$__unixEpochGroup",
|
|
51
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "$__unixEpochGroupAlias",
|
|
55
|
+
parameters: [columnParam, intervalParam, fillParam]
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
const MACRO_NAMES = [
|
|
59
|
+
"$__time",
|
|
60
|
+
"$__timeEpoch",
|
|
61
|
+
"$__timeFilter",
|
|
62
|
+
"$__timeFrom",
|
|
63
|
+
"$__timeTo",
|
|
64
|
+
"$__timeGroup",
|
|
65
|
+
"$__timeGroupAlias",
|
|
66
|
+
"$__unixEpochFilter",
|
|
67
|
+
"$__unixEpochNanoFilter",
|
|
68
|
+
"$__unixEpochNanoFrom",
|
|
69
|
+
"$__unixEpochNanoTo",
|
|
70
|
+
"$__unixEpochGroup",
|
|
71
|
+
"$__unixEpochGroupAlias"
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
exports.COMMON_FNS = COMMON_FNS;
|
|
75
|
+
exports.MACRO_FUNCTIONS = MACRO_FUNCTIONS;
|
|
76
|
+
exports.MACRO_NAMES = MACRO_NAMES;
|
|
77
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","sources":["../../src/constants.ts"],"sourcesContent":["import { Func, FuncParameter } from './types';\n\nexport const COMMON_FNS: Func[] = [\n { name: 'AVG' },\n { name: 'COUNT' },\n { name: 'MAX' },\n { name: 'MIN' },\n { name: 'SUM' },\n];\n\nconst intervalParam: FuncParameter = {\n name: 'Interval',\n required: true,\n options: () => {\n return Promise.resolve([{ label: '$__interval', value: '$__interval' }]);\n },\n};\nconst fillParam: FuncParameter = {\n name: 'Fill',\n required: false,\n options: () =>\n Promise.resolve([\n { label: '0', value: '0' },\n { label: 'NULL', value: 'NULL' },\n { label: 'previous', value: 'previous' },\n ]),\n};\n\nexport const MACRO_FUNCTIONS = (columnParam: FuncParameter) => [\n {\n name: '$__timeGroup',\n description: 'Time grouping function',\n parameters: [columnParam, intervalParam, fillParam],\n },\n {\n name: '$__timeGroupAlias',\n description: 'Time grouping function with time as alias',\n parameters: [columnParam, intervalParam, fillParam],\n },\n {\n name: '$__time',\n description: 'An expression to rename the column to time',\n parameters: [columnParam],\n },\n {\n name: '$__timeEpoch',\n parameters: [columnParam],\n },\n {\n name: '$__unixEpochGroup',\n parameters: [columnParam, intervalParam, fillParam],\n },\n {\n name: '$__unixEpochGroupAlias',\n parameters: [columnParam, intervalParam, fillParam],\n },\n];\n\nexport const MACRO_NAMES = [\n '$__time',\n '$__timeEpoch',\n '$__timeFilter',\n '$__timeFrom',\n '$__timeTo',\n '$__timeGroup',\n '$__timeGroupAlias',\n '$__unixEpochFilter',\n '$__unixEpochNanoFilter',\n '$__unixEpochNanoFrom',\n '$__unixEpochNanoTo',\n '$__unixEpochGroup',\n '$__unixEpochGroupAlias',\n];\n"],"names":[],"mappings":";;;;;AAEO,MAAM,UAAA,GAAqB;AAAA,EAChC,EAAE,MAAM,KAAA,EAAM;AAAA,EACd,EAAE,MAAM,OAAA,EAAQ;AAAA,EAChB,EAAE,MAAM,KAAA,EAAM;AAAA,EACd,EAAE,MAAM,KAAA,EAAM;AAAA,EACd,EAAE,MAAM,KAAA;AACV;AAEA,MAAM,aAAA,GAA+B;AAAA,EACnC,IAAA,EAAM,UAAA;AAAA,EACN,QAAA,EAAU,IAAA;AAAA,EACV,SAAS,MAAM;AACb,IAAA,OAAO,OAAA,CAAQ,QAAQ,CAAC,EAAE,OAAO,aAAA,EAAe,KAAA,EAAO,aAAA,EAAe,CAAC,CAAA;AAAA,EACzE;AACF,CAAA;AACA,MAAM,SAAA,GAA2B;AAAA,EAC/B,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,KAAA;AAAA,EACV,OAAA,EAAS,MACP,OAAA,CAAQ,OAAA,CAAQ;AAAA,IACd,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAO,GAAA,EAAI;AAAA,IACzB,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAO;AAAA,IAC/B,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA;AAAW,GACxC;AACL,CAAA;AAEO,MAAM,eAAA,GAAkB,CAAC,WAAA,KAA+B;AAAA,EAC7D;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,WAAA,EAAa,wBAAA;AAAA,IACb,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA,GACpD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,WAAA,EAAa,2CAAA;AAAA,IACb,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA,GACpD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa,4CAAA;AAAA,IACb,UAAA,EAAY,CAAC,WAAW;AAAA,GAC1B;AAAA,EACA;AAAA,IACE,IAAA,EAAM,cAAA;AAAA,IACN,UAAA,EAAY,CAAC,WAAW;AAAA,GAC1B;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA,GACpD;AAAA,EACA;AAAA,IACE,IAAA,EAAM,wBAAA;AAAA,IACN,UAAA,EAAY,CAAC,WAAA,EAAa,aAAA,EAAe,SAAS;AAAA;AAEtD;AAEO,MAAM,WAAA,GAAc;AAAA,EACzB,SAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF;;;;;;"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var rxjs = require('rxjs');
|
|
6
|
+
var operators = require('rxjs/operators');
|
|
7
|
+
var data = require('@grafana/data');
|
|
8
|
+
var pluginUi = require('@grafana/plugin-ui');
|
|
9
|
+
var runtime = require('@grafana/runtime');
|
|
10
|
+
var ResponseParser = require('../ResponseParser.cjs');
|
|
11
|
+
var QueryEditorLazy = require('../components/QueryEditorLazy.cjs');
|
|
12
|
+
var constants = require('../constants.cjs');
|
|
13
|
+
var types = require('../types.cjs');
|
|
14
|
+
var migration = require('../utils/migration.cjs');
|
|
15
|
+
|
|
16
|
+
"use strict";
|
|
17
|
+
class SqlDatasource extends runtime.DataSourceWithBackend {
|
|
18
|
+
constructor(instanceSettings, templateSrv = runtime.getTemplateSrv()) {
|
|
19
|
+
var _a;
|
|
20
|
+
super(instanceSettings);
|
|
21
|
+
this.templateSrv = templateSrv;
|
|
22
|
+
this.dialect = "other";
|
|
23
|
+
this.interpolateVariable = (value, variable) => {
|
|
24
|
+
if (typeof value === "string") {
|
|
25
|
+
if (variable.multi || variable.includeAll) {
|
|
26
|
+
return this.getQueryModel().quoteLiteral(value);
|
|
27
|
+
} else {
|
|
28
|
+
return String(value).replace(/'/g, "''");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (typeof value === "number") {
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));
|
|
36
|
+
return quotedValues.join(",");
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
};
|
|
40
|
+
this.name = instanceSettings.name;
|
|
41
|
+
this.responseParser = new ResponseParser.ResponseParser();
|
|
42
|
+
this.uid = instanceSettings.uid;
|
|
43
|
+
const settingsData = instanceSettings.jsonData || {};
|
|
44
|
+
this.interval = settingsData.timeInterval || "1m";
|
|
45
|
+
this.db = this.getDB();
|
|
46
|
+
this.preconfiguredDatabase = (_a = settingsData.database) != null ? _a : "";
|
|
47
|
+
this.annotations = {
|
|
48
|
+
prepareAnnotation: migration,
|
|
49
|
+
QueryEditor: QueryEditorLazy.SqlQueryEditorLazy
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
getResponseParser() {
|
|
53
|
+
return this.responseParser;
|
|
54
|
+
}
|
|
55
|
+
interpolateVariablesInQueries(queries, scopedVars) {
|
|
56
|
+
let expandedQueries = queries;
|
|
57
|
+
if (queries && queries.length > 0) {
|
|
58
|
+
expandedQueries = queries.map((query) => {
|
|
59
|
+
const expandedQuery = {
|
|
60
|
+
...query,
|
|
61
|
+
datasource: this.getRef(),
|
|
62
|
+
rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),
|
|
63
|
+
rawQuery: true
|
|
64
|
+
};
|
|
65
|
+
return expandedQuery;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return expandedQueries;
|
|
69
|
+
}
|
|
70
|
+
filterQuery(query) {
|
|
71
|
+
return !query.hide;
|
|
72
|
+
}
|
|
73
|
+
applyTemplateVariables(target, scopedVars) {
|
|
74
|
+
return {
|
|
75
|
+
refId: target.refId,
|
|
76
|
+
datasource: this.getRef(),
|
|
77
|
+
rawSql: this.templateSrv.replace(target.rawSql, scopedVars, this.interpolateVariable),
|
|
78
|
+
format: target.format
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
query(request) {
|
|
82
|
+
const databaseIssue = this.checkForDatabaseIssue(request);
|
|
83
|
+
if (!!databaseIssue) {
|
|
84
|
+
const error = new Error(databaseIssue);
|
|
85
|
+
return rxjs.throwError(() => error);
|
|
86
|
+
}
|
|
87
|
+
request.targets.forEach((target) => {
|
|
88
|
+
var _a;
|
|
89
|
+
if (request.app === data.CoreApp.Dashboard || request.app === data.CoreApp.PanelViewer) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
runtime.reportInteraction("grafana_sql_query_executed", {
|
|
93
|
+
datasource: (_a = target.datasource) == null ? void 0 : _a.type,
|
|
94
|
+
editorMode: target.editorMode,
|
|
95
|
+
format: target.format,
|
|
96
|
+
app: request.app
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
return super.query(request);
|
|
100
|
+
}
|
|
101
|
+
checkForDatabaseIssue(request) {
|
|
102
|
+
if (this.type === "grafana-postgresql-datasource" && !this.preconfiguredDatabase) {
|
|
103
|
+
return `You do not currently have a default database configured for this data source. Postgres requires a default
|
|
104
|
+
database with which to connect. Please configure one through the Data Sources Configuration page, or if you
|
|
105
|
+
are using a provisioning file, update that configuration file with a default database.`;
|
|
106
|
+
}
|
|
107
|
+
if (request.app !== data.CoreApp.Explore) {
|
|
108
|
+
if (!!this.preconfiguredDatabase) {
|
|
109
|
+
for (const target of request.targets) {
|
|
110
|
+
if (target.editorMode === pluginUi.EditorMode.Builder && target.dataset && target.dataset !== this.preconfiguredDatabase) {
|
|
111
|
+
return `The configuration for this panel's data source has been modified. The previous database used in this panel's
|
|
112
|
+
saved query is no longer available. Please update the query to use the new database option.
|
|
113
|
+
Previous query parameters will be preserved until the query is updated.`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
async metricFindQuery(query, options) {
|
|
121
|
+
const range = options == null ? void 0 : options.range;
|
|
122
|
+
if (range == null) {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
let refId = "tempvar";
|
|
126
|
+
if (options && options.variable && options.variable.name) {
|
|
127
|
+
refId = options.variable.name;
|
|
128
|
+
}
|
|
129
|
+
const scopedVars = {
|
|
130
|
+
...options == null ? void 0 : options.scopedVars,
|
|
131
|
+
...data.getSearchFilterScopedVar({ query, wildcardChar: "%", options })
|
|
132
|
+
};
|
|
133
|
+
const rawSql = this.templateSrv.replace(query, scopedVars, this.interpolateVariable);
|
|
134
|
+
const interpolatedQuery = {
|
|
135
|
+
refId,
|
|
136
|
+
datasource: this.getRef(),
|
|
137
|
+
rawSql,
|
|
138
|
+
format: types.QueryFormat.Table
|
|
139
|
+
};
|
|
140
|
+
let response;
|
|
141
|
+
try {
|
|
142
|
+
response = await this.runMetaQuery(interpolatedQuery, range);
|
|
143
|
+
} catch (error) {
|
|
144
|
+
console.error(error);
|
|
145
|
+
throw new Error("error when executing the sql query");
|
|
146
|
+
}
|
|
147
|
+
return this.getResponseParser().transformMetricFindResponse(response);
|
|
148
|
+
}
|
|
149
|
+
// NOTE: this always runs with the `@grafana/data/getDefaultTimeRange` time range
|
|
150
|
+
async runSql(query, options) {
|
|
151
|
+
const range = data.getDefaultTimeRange();
|
|
152
|
+
const frame = await this.runMetaQuery({ rawSql: query, format: types.QueryFormat.Table, refId: options == null ? void 0 : options.refId }, range);
|
|
153
|
+
return new data.DataFrameView(frame);
|
|
154
|
+
}
|
|
155
|
+
runMetaQuery(request, range) {
|
|
156
|
+
const refId = request.refId || "meta";
|
|
157
|
+
const queries = [{ ...request, datasource: request.datasource || this.getRef(), refId }];
|
|
158
|
+
return rxjs.lastValueFrom(
|
|
159
|
+
runtime.getBackendSrv().fetch({
|
|
160
|
+
url: "/api/ds/query",
|
|
161
|
+
method: "POST",
|
|
162
|
+
headers: this.getRequestHeaders(),
|
|
163
|
+
data: {
|
|
164
|
+
from: range.from.valueOf().toString(),
|
|
165
|
+
to: range.to.valueOf().toString(),
|
|
166
|
+
queries
|
|
167
|
+
},
|
|
168
|
+
requestId: refId
|
|
169
|
+
}).pipe(
|
|
170
|
+
operators.map((res) => {
|
|
171
|
+
var _a;
|
|
172
|
+
const rsp = runtime.toDataQueryResponse(res, queries);
|
|
173
|
+
return (_a = rsp.data[0]) != null ? _a : { fields: [] };
|
|
174
|
+
})
|
|
175
|
+
)
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
targetContainsTemplate(target) {
|
|
179
|
+
let queryWithoutMacros = target.rawSql;
|
|
180
|
+
constants.MACRO_NAMES.forEach((value) => {
|
|
181
|
+
queryWithoutMacros = (queryWithoutMacros == null ? void 0 : queryWithoutMacros.replace(value, "")) || "";
|
|
182
|
+
});
|
|
183
|
+
return this.templateSrv.containsTemplate(queryWithoutMacros);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
exports.SqlDatasource = SqlDatasource;
|
|
188
|
+
//# sourceMappingURL=SqlDatasource.cjs.map
|