@grafana/plugin-ui 0.13.1 → 0.14.1-dsconfig.b962e11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs +2918 -364
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +553 -39
- package/dist/cjs/test-utils.cjs +2 -2
- package/dist/cjs/test-utils.cjs.map +1 -1
- package/dist/cjs/test-utils.d.cts +1 -1
- package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/styles.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +3 -3
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/types.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/utils.js +3 -3
- package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/AuthorizationHeaderField.js +53 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/AuthorizationHeaderField.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/ComplexFieldNote.js +24 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/ComplexFieldNote.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js +229 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/IndexedPairEditor.js +124 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/IndexedPairEditor.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/PdcFieldNote.js +34 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/PdcFieldNote.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js +60 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SecureFieldInput.js +61 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SecureFieldInput.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js +54 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.js +84 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js +176 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js +88 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js +106 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/tabStyles.js +241 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/tabStyles.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/useDatasourceConfigForm.js +284 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/useDatasourceConfigForm.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/wizardStyles.js +124 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/wizardStyles.js.map +1 -0
- package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +11 -11
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLink.js +4 -4
- package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLinks.js +3 -3
- package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +8 -8
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/styles.js +2 -2
- package/dist/esm/components/DatePicker/styles.js.map +1 -1
- package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
- package/dist/esm/components/DatePickerWithInput/styles.js +2 -2
- package/dist/esm/components/DatePickerWithInput/styles.js.map +1 -1
- package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
- package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
- package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js +1 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/ConfirmModal.js +1 -1
- package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorField.js +5 -5
- package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
- package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRow.js +4 -4
- package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
- package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
- package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
- package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
- package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
- package/dist/esm/components/QueryEditor/InlineSelect.js +1 -1
- package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
- package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
- package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryEditor.js +10 -8
- package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryHeader.js +20 -20
- package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
- package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
- package/dist/esm/components/QueryEditor/Space.js +2 -2
- package/dist/esm/components/QueryEditor/Space.js.map +1 -1
- package/dist/esm/components/QueryEditor/TableSelector.js +0 -1
- package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/defaults.js +7 -7
- package/dist/esm/components/QueryEditor/defaults.js.map +1 -1
- package/dist/esm/components/QueryEditor/expressions.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +10 -2
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +7 -2
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +4 -4
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +14 -4
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/types.js +0 -1
- package/dist/esm/components/QueryEditor/types.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/formatSQL.js +15 -4
- package/dist/esm/components/QueryEditor/utils/formatSQL.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/sql.utils.js +8 -8
- package/dist/esm/components/QueryEditor/utils/sql.utils.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +26 -27
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +3 -3
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +4 -4
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +4 -4
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +0 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -3
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +0 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +0 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +9 -9
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +10 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
- package/dist/esm/components/SQLEditor/components/SQLEditor.js +13 -13
- package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +1 -1
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/Monaco.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/TextModel.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQuery.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQuery.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueries.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/definition.js +0 -6
- package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js +2 -2
- package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js +5 -4
- package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/language.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/macros.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js +2 -2
- package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js +1 -1
- package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +27 -26
- package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js +1 -1
- package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js.map +1 -1
- package/dist/esm/components/SQLEditor/test-utils/index.js.map +1 -1
- package/dist/esm/components/SQLEditor/test-utils/statementPosition.js.map +1 -1
- package/dist/esm/components/SQLEditor/types.js +1 -17
- package/dist/esm/components/SQLEditor/types.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/LinkedToken.js +8 -8
- package/dist/esm/components/SQLEditor/utils/LinkedToken.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/commands.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/debugger.js +1 -1
- package/dist/esm/components/SQLEditor/utils/debugger.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/getSuggestionKind.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js +3 -3
- package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/toCompletionItem.js +1 -1
- package/dist/esm/components/SQLEditor/utils/toCompletionItem.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/tokenType.js +18 -0
- package/dist/esm/components/SQLEditor/utils/tokenType.js.map +1 -0
- package/dist/esm/components/SQLEditor/utils/tokenUtils.js +10 -10
- package/dist/esm/components/SQLEditor/utils/tokenUtils.js.map +1 -1
- package/dist/esm/components/Segment/Segment.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +11 -11
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +4 -4
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +4 -4
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +6 -6
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +8 -8
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/types.js.map +1 -1
- package/dist/esm/datasource/SqlDatasource.js +14 -14
- package/dist/esm/datasource/SqlDatasource.js.map +1 -1
- package/dist/esm/datasource/constants.js.map +1 -1
- package/dist/esm/datasource/schema/config.js +235 -0
- package/dist/esm/datasource/schema/config.js.map +1 -0
- package/dist/esm/datasource/schema/datasource.js +228 -0
- package/dist/esm/datasource/schema/datasource.js.map +1 -0
- package/dist/esm/datasource/schema/llmHints.js +54 -0
- package/dist/esm/datasource/schema/llmHints.js.map +1 -0
- package/dist/esm/datasource/schema/provisioningYaml.js +358 -0
- package/dist/esm/datasource/schema/provisioningYaml.js.map +1 -0
- package/dist/esm/hooks/useDebounce.js.map +1 -1
- package/dist/esm/index.d.ts +553 -39
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/test/mocks/DataQuery.js.map +1 -1
- package/dist/esm/test/mocks/Datasource.js +1 -1
- package/dist/esm/test/mocks/Datasource.js.map +1 -1
- package/dist/esm/test/mocks/Plugin.js +1 -1
- package/dist/esm/test/mocks/Plugin.js.map +1 -1
- package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -1
- package/dist/esm/test/mocks/utils.js +2 -2
- package/dist/esm/test/mocks/utils.js.map +1 -1
- package/dist/esm/test-utils.d.ts +1 -1
- package/package.json +23 -20
|
@@ -37,9 +37,9 @@ function OrderByRow({ sql, onSqlChange, columns, showOffset }) {
|
|
|
37
37
|
);
|
|
38
38
|
const onOrderByChange = useCallback(
|
|
39
39
|
(item) => {
|
|
40
|
-
const newSql = { ...sql, orderBy: setPropertyField(item == null ?
|
|
40
|
+
const newSql = { ...sql, orderBy: setPropertyField(item == null ? void 0 : item.value) };
|
|
41
41
|
if (item === null) {
|
|
42
|
-
newSql.orderByDirection =
|
|
42
|
+
newSql.orderByDirection = void 0;
|
|
43
43
|
}
|
|
44
44
|
onSqlChange(newSql);
|
|
45
45
|
},
|
|
@@ -50,7 +50,7 @@ function OrderByRow({ sql, onSqlChange, columns, showOffset }) {
|
|
|
50
50
|
{
|
|
51
51
|
"aria-label": "Order by",
|
|
52
52
|
options: columns,
|
|
53
|
-
value: ((_a = sql.orderBy) == null ?
|
|
53
|
+
value: ((_a = sql.orderBy) == null ? void 0 : _a.property.name) ? toOption(sql.orderBy.property.name) : null,
|
|
54
54
|
isClearable: true,
|
|
55
55
|
menuShouldPortal: true,
|
|
56
56
|
onChange: onOrderByChange
|
|
@@ -59,7 +59,7 @@ function OrderByRow({ sql, onSqlChange, columns, showOffset }) {
|
|
|
59
59
|
RadioButtonGroup,
|
|
60
60
|
{
|
|
61
61
|
options: sortOrderOptions,
|
|
62
|
-
disabled: !((_b = sql == null ?
|
|
62
|
+
disabled: !((_b = sql == null ? void 0 : sql.orderBy) == null ? void 0 : _b.property.name),
|
|
63
63
|
value: sql.orderByDirection,
|
|
64
64
|
onChange: onSortOrderChange
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrderByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/OrderByRow.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\nimport { type SQLExpression } from '../types';\nimport { setPropertyField } from '../utils/sql.utils';\nimport { Space } from '../Space';\nimport { EditorField } from '../EditorField';\nimport { InputGroup } from '../InputGroup';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label=\"Order by\" width={25}>\n <InputGroup>\n <Select\n aria-label=\"Order by\"\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label=\"Limit\" optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label=\"Offset\" optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAiBA,MAAM,
|
|
1
|
+
{"version":3,"file":"OrderByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/OrderByRow.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\nimport { type SQLExpression } from '../types';\nimport { setPropertyField } from '../utils/sql.utils';\nimport { Space } from '../Space';\nimport { EditorField } from '../EditorField';\nimport { InputGroup } from '../InputGroup';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label=\"Order by\" width={25}>\n <InputGroup>\n <Select\n aria-label=\"Order by\"\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label=\"Limit\" optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label=\"Offset\" optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAiBA,MAAM,gBAAA,GAAmB;AAAA,EACvB,EAAE,WAAA,EAAa,mBAAA,EAAqB,KAAA,EAAO,KAAA,EAAO,MAAM,gBAAA,EAAiB;AAAA,EACzE,EAAE,WAAA,EAAa,oBAAA,EAAsB,KAAA,EAAO,MAAA,EAAQ,MAAM,kBAAA;AAC5D,CAAA;AAEO,SAAS,WAAW,EAAE,GAAA,EAAK,WAAA,EAAa,OAAA,EAAS,YAAW,EAAoB;AAtBvF,EAAA,IAAA,EAAA,EAAA,EAAA;AAuBE,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,IAAA,KAAyB;AACxB,MAAA,MAAM,MAAA,GAAwB,EAAE,GAAG,GAAA,EAAK,kBAAkB,IAAA,EAAK;AAC/D,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA6C;AAC5C,MAAA,MAAM,MAAA,GAAwB,EAAE,GAAG,GAAA,EAAK,KAAA,EAAO,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,aAAA,CAAc,KAAA,EAAO,EAAE,CAAA,EAAE;AAC9F,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,KAAA,KAA6C;AAC5C,MAAA,MAAM,MAAA,GAAwB,EAAE,GAAG,GAAA,EAAK,MAAA,EAAQ,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,aAAA,CAAc,KAAA,EAAO,EAAE,CAAA,EAAE;AAC/F,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,IAAA,KAAkC;AACjC,MAAA,MAAM,MAAA,GAAwB,EAAE,GAAG,GAAA,EAAK,SAAS,gBAAA,CAAiB,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,KAAK,CAAA,EAAE;AAC/E,MAAA,IAAI,SAAS,IAAA,EAAM;AACjB,QAAA,MAAA,CAAO,gBAAA,GAAmB,MAAA;AAAA,MAC5B;AACA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,WAAA,EAAA,EAAY,KAAA,EAAM,YAAW,KAAA,EAAO,EAAA,EAAA,sCAClC,UAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,UAAA;AAAA,MACX,OAAA,EAAS,OAAA;AAAA,MACT,KAAA,EAAA,CAAA,CAAO,EAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,QAAA,CAAS,IAAA,IAAO,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA;AAAA,MAC1E,WAAA,EAAW,IAAA;AAAA,MACX,gBAAA,EAAgB,IAAA;AAAA,MAChB,QAAA,EAAU;AAAA;AAAA,GACZ,kBAEA,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAM,CAAA,EAAG,KAAK,CAAA,kBAEf,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAS,gBAAA;AAAA,MACT,QAAA,EAAU,EAAA,CAAC,EAAA,GAAA,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,OAAA,KAAL,mBAAc,QAAA,CAAS,IAAA,CAAA;AAAA,MAClC,OAAO,GAAA,CAAI,gBAAA;AAAA,MACX,QAAA,EAAU;AAAA;AAAA,GAEd,CACF,CAAA,kBACA,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,OAAM,OAAA,EAAQ,QAAA,EAAQ,IAAA,EAAC,KAAA,EAAO,EAAA,EAAA,kBACzC,KAAA,CAAA,aAAA,CAAC,SAAM,IAAA,EAAK,QAAA,EAAS,GAAA,EAAK,CAAA,EAAG,EAAA,EAAI,QAAA,CAAS,QAAQ,CAAA,EAAG,KAAA,EAAO,GAAA,CAAI,KAAA,IAAS,EAAA,EAAI,QAAA,EAAU,eAAe,CACxG,CAAA,EACC,UAAA,oBACC,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,UAAS,QAAA,EAAQ,IAAA,EAAC,KAAA,EAAO,EAAA,EAAA,kBAC1C,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAM,MAAK,QAAA,EAAS,EAAA,EAAI,QAAA,CAAS,SAAS,CAAA,EAAG,KAAA,EAAO,GAAA,CAAI,MAAA,IAAU,EAAA,EAAI,QAAA,EAAU,cAAA,EAAgB,CACnG,CAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -5,23 +5,23 @@ import '@grafana/data';
|
|
|
5
5
|
import { useStyles2, IconButton, Field, CodeEditor } from '@grafana/ui';
|
|
6
6
|
import { formatSQL } from '../utils/formatSQL.js';
|
|
7
7
|
|
|
8
|
-
function Preview({ rawSql }) {
|
|
8
|
+
function Preview({ rawSql, language = "sql" }) {
|
|
9
9
|
const [_, copyToClipboard] = useCopyToClipboard();
|
|
10
|
-
const styles = useStyles2(getStyles);
|
|
10
|
+
const styles = useStyles2(getStyles$k);
|
|
11
11
|
const labelElement = /* @__PURE__ */ React.createElement("div", { className: styles.labelWrapper }, /* @__PURE__ */ React.createElement("label", { className: styles.label }, "Preview"), /* @__PURE__ */ React.createElement(IconButton, { tooltip: "Copy to clipboard", onClick: () => copyToClipboard(rawSql), name: "copy" }));
|
|
12
12
|
return /* @__PURE__ */ React.createElement(Field, { label: labelElement, className: styles.grow }, /* @__PURE__ */ React.createElement(
|
|
13
13
|
CodeEditor,
|
|
14
14
|
{
|
|
15
15
|
language: "sql",
|
|
16
16
|
height: 80,
|
|
17
|
-
value: formatSQL(rawSql),
|
|
17
|
+
value: formatSQL(rawSql, language),
|
|
18
18
|
monacoOptions: { scrollbar: { vertical: "hidden" }, scrollBeyondLastLine: false },
|
|
19
19
|
readOnly: true,
|
|
20
20
|
showMiniMap: false
|
|
21
21
|
}
|
|
22
22
|
));
|
|
23
23
|
}
|
|
24
|
-
function getStyles(theme) {
|
|
24
|
+
function getStyles$k(theme) {
|
|
25
25
|
return {
|
|
26
26
|
grow: css({ flexGrow: 1 }),
|
|
27
27
|
label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Preview.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/Preview.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../utils/formatSQL';\n\ntype PreviewProps = {\n rawSql: string;\n};\n\nexport function Preview({ rawSql }: PreviewProps) {\n // TODO: use zero index to give feedback about copy success\n const [_, copyToClipboard] = useCopyToClipboard();\n const styles = useStyles2(getStyles);\n\n const labelElement = (\n <div className={styles.labelWrapper}>\n <label className={styles.label}>Preview</label>\n <IconButton tooltip=\"Copy to clipboard\" onClick={() => copyToClipboard(rawSql)} name=\"copy\" />\n </div>\n );\n\n return (\n <Field label={labelElement} className={styles.grow}>\n <CodeEditor\n language=\"sql\"\n height={80}\n value={formatSQL(rawSql)}\n monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n readOnly={true}\n showMiniMap={false}\n />\n </Field>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n grow: css({ flexGrow: 1 }),\n label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n };\n}\n"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"Preview.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/Preview.tsx"],"sourcesContent":["import React from 'react';\nimport { css } from '@emotion/css';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../utils/formatSQL';\nimport type { SqlLanguage } from 'sql-formatter';\n\ntype PreviewProps = {\n rawSql: string;\n language?: SqlLanguage;\n};\n\nexport function Preview({ rawSql, language = 'sql' }: PreviewProps) {\n // TODO: use zero index to give feedback about copy success\n const [_, copyToClipboard] = useCopyToClipboard();\n const styles = useStyles2(getStyles);\n\n const labelElement = (\n <div className={styles.labelWrapper}>\n <label className={styles.label}>Preview</label>\n <IconButton tooltip=\"Copy to clipboard\" onClick={() => copyToClipboard(rawSql)} name=\"copy\" />\n </div>\n );\n\n return (\n <Field label={labelElement} className={styles.grow}>\n <CodeEditor\n language=\"sql\"\n height={80}\n value={formatSQL(rawSql, language)}\n monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n readOnly={true}\n showMiniMap={false}\n />\n </Field>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n grow: css({ flexGrow: 1 }),\n label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n };\n}\n"],"names":["getStyles"],"mappings":";;;;;;;AAeO,SAAS,OAAA,CAAQ,EAAE,MAAA,EAAQ,QAAA,GAAW,OAAM,EAAiB;AAElE,EAAA,MAAM,CAAC,CAAA,EAAG,eAAe,CAAA,GAAI,kBAAA,EAAmB;AAChD,EAAA,MAAM,MAAA,GAAS,WAAWA,WAAS,CAAA;AAEnC,EAAA,MAAM,YAAA,mBACJ,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,gCACrB,KAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,MAAA,CAAO,KAAA,EAAA,EAAO,SAAO,mBACvC,KAAA,CAAA,aAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,mBAAA,EAAoB,OAAA,EAAS,MAAM,gBAAgB,MAAM,CAAA,EAAG,IAAA,EAAK,MAAA,EAAO,CAC9F,CAAA;AAGF,EAAA,2CACG,KAAA,EAAA,EAAM,KAAA,EAAO,YAAA,EAAc,SAAA,EAAW,OAAO,IAAA,EAAA,kBAC5C,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAS,KAAA;AAAA,MACT,MAAA,EAAQ,EAAA;AAAA,MACR,KAAA,EAAO,SAAA,CAAU,MAAA,EAAQ,QAAQ,CAAA;AAAA,MACjC,aAAA,EAAe,EAAE,SAAA,EAAW,EAAE,UAAU,QAAA,EAAS,EAAG,sBAAsB,KAAA,EAAM;AAAA,MAChF,QAAA,EAAU,IAAA;AAAA,MACV,WAAA,EAAa;AAAA;AAAA,GAEjB,CAAA;AAEJ;AAEA,SAASA,YAAU,KAAA,EAAsB;AACvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,GAAA,CAAI,EAAE,QAAA,EAAU,GAAG,CAAA;AAAA,IACzB,KAAA,EAAO,IAAI,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,gBAAA,EAAkB,CAAA;AAAA,IAC1E,YAAA,EAAc,GAAA,CAAI,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAA,EAAgB,eAAA,EAAiB,aAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA,GAC3G;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLGroupByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLGroupByRow.tsx"],"sourcesContent":["import React from 'react';\nimport { type SelectableValue } from '@grafana/data';\n\nimport { GroupByRow } from './GroupByRow';\nimport { type
|
|
1
|
+
{"version":3,"file":"SQLGroupByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLGroupByRow.tsx"],"sourcesContent":["import React from 'react';\nimport { type SelectableValue } from '@grafana/data';\n\nimport { GroupByRow } from './GroupByRow';\nimport { type SQLQuery, type DB, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface SQLGroupByRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLGroupByRow({ fields, query, onQueryChange, db }: SQLGroupByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return <GroupByRow columns={fields} sql={query.sql!} onSqlChange={onSqlChange} />;\n}\n"],"names":[],"mappings":";;;;;;AAcO,SAAS,cAAc,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAuB;AACtF,EAAA,MAAM,EAAE,aAAY,GAAI,YAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AAEjE,EAAA,2CAAQ,UAAA,EAAA,EAAW,OAAA,EAAS,QAAQ,GAAA,EAAK,KAAA,CAAM,KAAM,WAAA,EAA0B,CAAA;AACjF;;;;"}
|
|
@@ -2,7 +2,6 @@ import React from 'react';
|
|
|
2
2
|
import '@grafana/data';
|
|
3
3
|
import { OrderByRow } from './OrderByRow.js';
|
|
4
4
|
import '../types.js';
|
|
5
|
-
import 'lodash';
|
|
6
5
|
import { useSqlChange } from '../utils/useSqlChange.js';
|
|
7
6
|
|
|
8
7
|
function SQLOrderByRow({ fields, query, onQueryChange, db }) {
|
|
@@ -10,9 +9,9 @@ function SQLOrderByRow({ fields, query, onQueryChange, db }) {
|
|
|
10
9
|
const { onSqlChange } = useSqlChange({ query, onQueryChange, db });
|
|
11
10
|
let columnsWithIndices = [];
|
|
12
11
|
if (fields) {
|
|
13
|
-
const options = (_b = (_a = query.sql) == null ?
|
|
12
|
+
const options = (_b = (_a = query.sql) == null ? void 0 : _a.columns) == null ? void 0 : _b.map((c, i) => {
|
|
14
13
|
var _a2, _b2;
|
|
15
|
-
const value = c.name ? `${c.name}(${(_a2 = c.parameters) == null ?
|
|
14
|
+
const value = c.name ? `${c.name}(${(_a2 = c.parameters) == null ? void 0 : _a2.map((p) => p.name)})` : (_b2 = c.parameters) == null ? void 0 : _b2.map((p) => p.name);
|
|
16
15
|
return {
|
|
17
16
|
value,
|
|
18
17
|
label: `${i + 1} - ${value}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLOrderByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLOrderByRow.tsx"],"sourcesContent":["import React from 'react';\nimport { type SelectableValue } from '@grafana/data';\nimport { OrderByRow } from './OrderByRow';\nimport { type
|
|
1
|
+
{"version":3,"file":"SQLOrderByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLOrderByRow.tsx"],"sourcesContent":["import React from 'react';\nimport { type SelectableValue } from '@grafana/data';\nimport { OrderByRow } from './OrderByRow';\nimport { type SQLQuery, type DB, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ntype SQLOrderByRowProps = {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n};\n\nexport function SQLOrderByRow({ fields, query, onQueryChange, db }: SQLOrderByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = [];\n\n if (fields) {\n const options = query.sql?.columns?.map((c, i) => {\n const value = c.name ? `${c.name}(${c.parameters?.map((p) => p.name)})` : c.parameters?.map((p) => p.name);\n return {\n value,\n label: `${i + 1} - ${value}`,\n };\n });\n columnsWithIndices = [\n {\n value: '',\n label: 'Selected columns',\n options,\n expanded: true,\n },\n ...fields,\n ];\n }\n\n return <OrderByRow sql={query.sql!} onSqlChange={onSqlChange} columns={columnsWithIndices} />;\n}\n"],"names":["_a","_b"],"mappings":";;;;;;AAaO,SAAS,cAAc,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAuB;AAbxF,EAAA,IAAA,EAAA,EAAA,EAAA;AAcE,EAAA,MAAM,EAAE,aAAY,GAAI,YAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AACjE,EAAA,IAAI,qBAAwC,EAAC;AAE7C,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,OAAA,GAAA,CAAU,iBAAM,GAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAW,YAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAoB,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AAlBtD,MAAA,IAAAA,GAAAA,EAAAC,GAAAA;AAmBM,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,IAAA,GAAO,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAA,CAAID,GAAAA,GAAA,CAAA,CAAE,UAAA,KAAF,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAc,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,CAAK,CAAA,CAAA,CAAA,GAAA,CAAMC,GAAAA,GAAA,CAAA,CAAE,UAAA,KAAF,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAc,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,CAAA;AACrG,MAAA,OAAO;AAAA,QACL,KAAA;AAAA,QACA,KAAA,EAAO,CAAA,EAAG,CAAA,GAAI,CAAC,MAAM,KAAK,CAAA;AAAA,OAC5B;AAAA,IACF,CAAA,CAAA;AACA,IAAA,kBAAA,GAAqB;AAAA,MACnB;AAAA,QACE,KAAA,EAAO,EAAA;AAAA,QACP,KAAA,EAAO,kBAAA;AAAA,QACP,OAAA;AAAA,QACA,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,GAAG;AAAA,KACL;AAAA,EACF;AAEA,EAAA,2CAAQ,UAAA,EAAA,EAAW,GAAA,EAAK,MAAM,GAAA,EAAM,WAAA,EAA0B,SAAS,kBAAA,EAAoB,CAAA;AAC7F;;;;"}
|
|
@@ -3,7 +3,6 @@ import { useAsync } from 'react-use';
|
|
|
3
3
|
import { toOption } from '@grafana/data';
|
|
4
4
|
import { SelectRow } from './SelectRow.js';
|
|
5
5
|
import '../types.js';
|
|
6
|
-
import 'lodash';
|
|
7
6
|
import { useSqlChange } from '../utils/useSqlChange.js';
|
|
8
7
|
|
|
9
8
|
function SQLSelectRow({ fields, query, onQueryChange, db }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLSelectRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLSelectRow.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { SelectRow } from './SelectRow';\nimport { type
|
|
1
|
+
{"version":3,"file":"SQLSelectRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLSelectRow.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { SelectRow } from './SelectRow';\nimport { type SQLQuery, type DB, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface SQLSelectRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLSelectRow({ fields, query, onQueryChange, db }: SQLSelectRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n const state = useAsync(async () => {\n const functions = await db.functions();\n return functions.map((f) => toOption(f.name));\n }, [db]);\n\n return <SelectRow columns={fields} sql={query.sql!} functions={state.value} onSqlChange={onSqlChange} />;\n}\n"],"names":[],"mappings":";;;;;;;AAcO,SAAS,aAAa,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAsB;AACpF,EAAA,MAAM,EAAE,aAAY,GAAI,YAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AAEjE,EAAA,MAAM,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,MAAM,SAAA,GAAY,MAAM,EAAA,CAAG,SAAA,EAAU;AACrC,IAAA,OAAO,UAAU,GAAA,CAAI,CAAC,MAAM,QAAA,CAAS,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,EAC9C,CAAA,EAAG,CAAC,EAAE,CAAC,CAAA;AAEP,EAAA,uBAAO,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,EAAU,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,MAAM,GAAA,EAAM,SAAA,EAAW,KAAA,CAAM,KAAA,EAAO,WAAA,EAA0B,CAAA;AACxG;;;;"}
|
|
@@ -4,7 +4,6 @@ import '@grafana/data';
|
|
|
4
4
|
import './AwesomeQueryBuilder.js';
|
|
5
5
|
import { WhereRow } from './WhereRow.js';
|
|
6
6
|
import '../types.js';
|
|
7
|
-
import 'lodash';
|
|
8
7
|
import { useSqlChange } from '../utils/useSqlChange.js';
|
|
9
8
|
|
|
10
9
|
function SQLWhereRow({ query, fields, onQueryChange, db }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLWhereRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLWhereRow.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue } from '@grafana/data';\nimport { type Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\nimport { type
|
|
1
|
+
{"version":3,"file":"SQLWhereRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SQLWhereRow.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type SelectableValue } from '@grafana/data';\nimport { type Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\nimport { type SQLQuery, type DB, type SQLExpression, type SQLSelectableValue, type QueryWithDefaults } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface WhereRowProps {\n query: QueryWithDefaults;\n fields: SelectableValue[];\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n const state = useAsync(async () => {\n return mapFieldsToTypes(fields);\n }, [fields]);\n\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return (\n <WhereRow\n // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n key={JSON.stringify(state.value)}\n config={{ fields: state.value || {} }}\n sql={query.sql!}\n onSqlChange={(val: SQLExpression) => {\n onSqlChange(val);\n }}\n />\n );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n const fields: Config['fields'] = {};\n for (const col of columns) {\n fields[col.value] = {\n type: col.raqbFieldType || 'text',\n valueSources: ['value'],\n mainWidgetProps: { customProps: { icon: col.icon } },\n };\n }\n return fields;\n}\n"],"names":[],"mappings":";;;;;;;;AAeO,SAAS,YAAY,EAAE,KAAA,EAAO,MAAA,EAAQ,aAAA,EAAe,IAAG,EAAkB;AAC/E,EAAA,MAAM,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,EAAE,aAAY,GAAI,YAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AAEjE,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,GAAA,EAAK,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK,CAAA;AAAA,MAC/B,QAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAE;AAAA,MACpC,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,WAAA,EAAa,CAAC,GAAA,KAAuB;AACnC,QAAA,WAAA,CAAY,GAAG,CAAA;AAAA,MACjB;AAAA;AAAA,GACF;AAEJ;AAGA,SAAS,iBAAiB,OAAA,EAA+B;AACvD,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI;AAAA,MAClB,IAAA,EAAM,IAAI,aAAA,IAAiB,MAAA;AAAA,MAC3B,YAAA,EAAc,CAAC,OAAO,CAAA;AAAA,MACtB,iBAAiB,EAAE,WAAA,EAAa,EAAE,IAAA,EAAM,GAAA,CAAI,MAAK;AAAE,KACrD;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;;;;"}
|
|
@@ -12,13 +12,13 @@ import { EditorStack } from '../EditorStack.js';
|
|
|
12
12
|
const asteriskValue = { label: "*", value: "*" };
|
|
13
13
|
function SelectRow({ sql, columns, onSqlChange, functions }) {
|
|
14
14
|
var _a;
|
|
15
|
-
const styles = useStyles2(getStyles);
|
|
15
|
+
const styles = useStyles2(getStyles$j);
|
|
16
16
|
const columnsWithAsterisk = [asteriskValue, ...columns || []];
|
|
17
17
|
const onColumnChange = useCallback(
|
|
18
18
|
(item, index) => (column) => {
|
|
19
19
|
var _a2, _b;
|
|
20
20
|
let modifiedItem = { ...item };
|
|
21
|
-
if (!((_a2 = item.parameters) == null ?
|
|
21
|
+
if (!((_a2 = item.parameters) == null ? void 0 : _a2.length)) {
|
|
22
22
|
modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value }];
|
|
23
23
|
} else {
|
|
24
24
|
modifiedItem.parameters = item.parameters.map(
|
|
@@ -27,7 +27,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
|
|
|
27
27
|
}
|
|
28
28
|
const newSql = {
|
|
29
29
|
...sql,
|
|
30
|
-
columns: (_b = sql.columns) == null ?
|
|
30
|
+
columns: (_b = sql.columns) == null ? void 0 : _b.map((c, i) => i === index ? modifiedItem : c)
|
|
31
31
|
};
|
|
32
32
|
onSqlChange(newSql);
|
|
33
33
|
},
|
|
@@ -38,11 +38,11 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
|
|
|
38
38
|
var _a2;
|
|
39
39
|
const newItem = {
|
|
40
40
|
...item,
|
|
41
|
-
name: aggregation == null ?
|
|
41
|
+
name: aggregation == null ? void 0 : aggregation.value
|
|
42
42
|
};
|
|
43
43
|
const newSql = {
|
|
44
44
|
...sql,
|
|
45
|
-
columns: (_a2 = sql.columns) == null ?
|
|
45
|
+
columns: (_a2 = sql.columns) == null ? void 0 : _a2.map((c, i) => i === index ? newItem : c)
|
|
46
46
|
};
|
|
47
47
|
onSqlChange(newSql);
|
|
48
48
|
},
|
|
@@ -64,7 +64,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
|
|
|
64
64
|
const newSql = { ...sql, columns: [...sql.columns, createFunctionField()] };
|
|
65
65
|
onSqlChange(newSql);
|
|
66
66
|
}, [onSqlChange, sql]);
|
|
67
|
-
return /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end", direction: "column" }, (_a = sql.columns) == null ?
|
|
67
|
+
return /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end", direction: "column" }, (_a = sql.columns) == null ? void 0 : _a.map((item, index) => /* @__PURE__ */ React.createElement("div", { key: index }, /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end" }, /* @__PURE__ */ React.createElement(EditorField, { label: "Column", width: 25 }, /* @__PURE__ */ React.createElement(
|
|
68
68
|
Select,
|
|
69
69
|
{
|
|
70
70
|
value: getColumnValue(item),
|
|
@@ -108,12 +108,12 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
|
|
|
108
108
|
}
|
|
109
109
|
));
|
|
110
110
|
}
|
|
111
|
-
const getStyles = () => {
|
|
111
|
+
const getStyles$j = () => {
|
|
112
112
|
return { addButton: css({ alignSelf: "flex-start" }) };
|
|
113
113
|
};
|
|
114
114
|
function getColumnValue({ parameters }) {
|
|
115
|
-
const column = parameters == null ?
|
|
116
|
-
if (column == null ?
|
|
115
|
+
const column = parameters == null ? void 0 : parameters.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);
|
|
116
|
+
if (column == null ? void 0 : column.name) {
|
|
117
117
|
return toOption(column.name);
|
|
118
118
|
}
|
|
119
119
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\nimport { EditorField } from '../EditorField';\nimport { type QueryEditorFunctionExpression, QueryEditorExpressionType } from '../expressions';\nimport { type SQLExpression } from '../types';\nimport { createFunctionField } from '../utils/sql.utils';\nimport { EditorStack } from '../EditorStack';\n\ninterface SelectRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, columns, onSqlChange, functions }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n\n const onColumnChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n let modifiedItem = { ...item };\n if (!item.parameters?.length) {\n modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n } else {\n modifiedItem.parameters = item.parameters.map((p) =>\n p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n );\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n };\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...sql.columns!];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, sql]);\n\n return (\n <EditorStack gap={2} alignItems=\"end\" direction=\"column\">\n {sql.columns?.map((item, index) => (\n <div key={index}>\n <EditorStack gap={2} alignItems=\"end\">\n <EditorField label=\"Column\" width={25}>\n <Select\n value={getColumnValue(item)}\n options={columnsWithAsterisk}\n inputId={`select-column-${index}-${uniqueId()}`}\n menuShouldPortal\n allowCustomValue\n onChange={onColumnChange(item, index)}\n />\n </EditorField>\n\n <EditorField label=\"Aggregation\" optional width={25}>\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={functions}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n <Button\n aria-label=\"Remove\"\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </EditorStack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label=\"Add\"\n className={styles.addButton}\n />\n </EditorStack>\n );\n}\n\nconst getStyles = () => {\n return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n if (column?.name) {\n return toOption(column.name);\n }\n return null;\n}\n"],"names":["_a"],"mappings":";;;;;;;;;;;AAkBA,MAAM,
|
|
1
|
+
{"version":3,"file":"SelectRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\nimport { EditorField } from '../EditorField';\nimport { type QueryEditorFunctionExpression, QueryEditorExpressionType } from '../expressions';\nimport { type SQLExpression } from '../types';\nimport { createFunctionField } from '../utils/sql.utils';\nimport { EditorStack } from '../EditorStack';\n\ninterface SelectRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, columns, onSqlChange, functions }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n\n const onColumnChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n let modifiedItem = { ...item };\n if (!item.parameters?.length) {\n modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n } else {\n modifiedItem.parameters = item.parameters.map((p) =>\n p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n );\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n };\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...sql.columns!];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, sql]);\n\n return (\n <EditorStack gap={2} alignItems=\"end\" direction=\"column\">\n {sql.columns?.map((item, index) => (\n <div key={index}>\n <EditorStack gap={2} alignItems=\"end\">\n <EditorField label=\"Column\" width={25}>\n <Select\n value={getColumnValue(item)}\n options={columnsWithAsterisk}\n inputId={`select-column-${index}-${uniqueId()}`}\n menuShouldPortal\n allowCustomValue\n onChange={onColumnChange(item, index)}\n />\n </EditorField>\n\n <EditorField label=\"Aggregation\" optional width={25}>\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={functions}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n <Button\n aria-label=\"Remove\"\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </EditorStack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label=\"Add\"\n className={styles.addButton}\n />\n </EditorStack>\n );\n}\n\nconst getStyles = () => {\n return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n if (column?.name) {\n return toOption(column.name);\n }\n return null;\n}\n"],"names":["getStyles","_a"],"mappings":";;;;;;;;;;;AAkBA,MAAM,aAAA,GAAgB,EAAE,KAAA,EAAO,GAAA,EAAK,OAAO,GAAA,EAAI;AAExC,SAAS,UAAU,EAAE,GAAA,EAAK,OAAA,EAAS,WAAA,EAAa,WAAU,EAAmB;AApBpF,EAAA,IAAA,EAAA;AAqBE,EAAA,MAAM,MAAA,GAAS,WAAWA,WAAS,CAAA;AACnC,EAAA,MAAM,sBAAsB,CAAC,aAAA,EAAe,GAAI,OAAA,IAAW,EAAG,CAAA;AAE9D,EAAA,MAAM,cAAA,GAAiB,WAAA;AAAA,IACrB,CAAC,IAAA,EAAqC,KAAA,KAAkB,CAAC,MAAA,KAAoC;AAzBjG,MAAA,IAAAC,GAAAA,EAAA,EAAA;AA0BM,MAAA,IAAI,YAAA,GAAe,EAAE,GAAG,IAAA,EAAK;AAC7B,MAAA,IAAI,GAACA,GAAAA,GAAA,IAAA,CAAK,UAAA,KAAL,IAAA,GAAA,MAAA,GAAAA,IAAiB,MAAA,CAAA,EAAQ;AAC5B,QAAA,YAAA,CAAa,UAAA,GAAa,CAAC,EAAE,IAAA,EAAM,0BAA0B,iBAAA,EAAmB,IAAA,EAAM,MAAA,CAAO,KAAA,EAAgB,CAAA;AAAA,MAC/G,CAAA,MAAO;AACL,QAAA,YAAA,CAAa,UAAA,GAAa,KAAK,UAAA,CAAW,GAAA;AAAA,UAAI,CAAC,CAAA,KAC7C,CAAA,CAAE,IAAA,KAAS,yBAAA,CAA0B,iBAAA,GAAoB,EAAE,GAAG,CAAA,EAAG,IAAA,EAAM,MAAA,CAAO,KAAA,EAAM,GAAI;AAAA,SAC1F;AAAA,MACF;AAEA,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,GAAG,GAAA;AAAA,QACH,OAAA,EAAA,CAAS,EAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,KAAM,KAAA,GAAQ,YAAA,GAAe,CAAA;AAAA,OACpE;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,mBAAA,GAAsB,WAAA;AAAA,IAC1B,CAAC,IAAA,EAAqC,KAAA,KAAkB,CAAC,WAAA,KAAyC;AA9CtG,MAAA,IAAAA,GAAAA;AA+CM,MAAA,MAAM,OAAA,GAAU;AAAA,QACd,GAAG,IAAA;AAAA,QACH,MAAM,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa;AAAA,OACrB;AACA,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,GAAG,GAAA;AAAA,QACH,OAAA,EAAA,CAASA,GAAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAa,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,KAAM,KAAA,GAAQ,OAAA,GAAU,CAAA;AAAA,OAC/D;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,UAAkB,MAAM;AACvB,MAAA,MAAM,KAAA,GAAQ,CAAC,GAAG,GAAA,CAAI,OAAQ,CAAA;AAC9B,MAAA,KAAA,CAAM,MAAA,CAAO,OAAO,CAAC,CAAA;AACrB,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,GAAG,GAAA;AAAA,QACH,OAAA,EAAS;AAAA,OACX;AACA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,SAAA,GAAY,YAAY,MAAM;AAClC,IAAA,MAAM,MAAA,GAAwB,EAAE,GAAG,GAAA,EAAK,OAAA,EAAS,CAAC,GAAG,GAAA,CAAI,OAAA,EAAU,mBAAA,EAAqB,CAAA,EAAE;AAC1F,IAAA,WAAA,CAAY,MAAM,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,WAAA,EAAa,GAAG,CAAC,CAAA;AAErB,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,GAAA,EAAK,CAAA,EAAG,UAAA,EAAW,KAAA,EAAM,SAAA,EAAU,QAAA,EAAA,EAAA,CAC7C,EAAA,GAAA,GAAA,CAAI,OAAA,KAAJ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,qBACvB,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,KAAA,EAAA,kBACR,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,GAAA,EAAK,CAAA,EAAG,UAAA,EAAW,KAAA,EAAA,kBAC9B,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,QAAA,EAAS,OAAO,EAAA,EAAA,kBACjC,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,eAAe,IAAI,CAAA;AAAA,MAC1B,OAAA,EAAS,mBAAA;AAAA,MACT,OAAA,EAAS,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,MAC7C,gBAAA,EAAgB,IAAA;AAAA,MAChB,gBAAA,EAAgB,IAAA;AAAA,MAChB,QAAA,EAAU,cAAA,CAAe,IAAA,EAAM,KAAK;AAAA;AAAA,GAExC,mBAEA,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,OAAM,aAAA,EAAc,QAAA,EAAQ,IAAA,EAAC,KAAA,EAAO,EAAA,EAAA,kBAC/C,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAO,IAAA,CAAK,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,GAAI,IAAA;AAAA,MACzC,OAAA,EAAS,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,MAClD,WAAA,EAAW,IAAA;AAAA,MACX,gBAAA,EAAgB,IAAA;AAAA,MAChB,gBAAA,EAAgB,IAAA;AAAA,MAChB,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU,mBAAA,CAAoB,IAAA,EAAM,KAAK;AAAA;AAAA,GAE7C,CAAA,kBACA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,QAAA;AAAA,MACX,IAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAK,WAAA;AAAA,MACL,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,IAAA;AAAA,MACL,OAAA,EAAS,aAAa,KAAK;AAAA;AAAA,GAE/B,CACF,CAAA,CAAA,kBAEF,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,OAAA,EAAS,SAAA;AAAA,MACT,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,IAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,YAAA,EAAW,KAAA;AAAA,MACX,WAAW,MAAA,CAAO;AAAA;AAAA,GAEtB,CAAA;AAEJ;AAEA,MAAMD,cAAY,MAAM;AACtB,EAAA,OAAO,EAAE,SAAA,EAAW,GAAA,CAAI,EAAE,SAAA,EAAW,YAAA,EAAc,CAAA,EAAE;AACvD,CAAA;AAEA,SAAS,cAAA,CAAe,EAAE,UAAA,EAAW,EAAkE;AACrG,EAAA,MAAM,SAAS,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,yBAAA,CAA0B,iBAAA,CAAA;AAC5E,EAAA,IAAI,iCAAQ,IAAA,EAAM;AAChB,IAAA,OAAO,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -12,12 +12,20 @@ import { EditorRow } from './EditorRow.js';
|
|
|
12
12
|
import { EditorField } from './EditorField.js';
|
|
13
13
|
import { EditorRows } from './EditorRows.js';
|
|
14
14
|
|
|
15
|
-
const VisualEditor = ({
|
|
15
|
+
const VisualEditor = ({
|
|
16
|
+
query,
|
|
17
|
+
db,
|
|
18
|
+
queryRowFilter,
|
|
19
|
+
onChange,
|
|
20
|
+
onValidate,
|
|
21
|
+
language = "sql",
|
|
22
|
+
range
|
|
23
|
+
}) => {
|
|
16
24
|
const state = useAsync(async () => {
|
|
17
25
|
const fields = await db.fields(query);
|
|
18
26
|
return fields;
|
|
19
27
|
}, [db, query.dataset, query.table]);
|
|
20
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorRows, null, /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLSelectRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.filter && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Filter by column value", optional: true }, /* @__PURE__ */ React.createElement(SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.group && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Group by column" }, /* @__PURE__ */ React.createElement(SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.order && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.preview && query.rawSql && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(Preview, { rawSql: query.rawSql }))), /* @__PURE__ */ React.createElement(QueryToolbox, { db, query, onValidate, range }));
|
|
28
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorRows, null, /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLSelectRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.filter && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Filter by column value", optional: true }, /* @__PURE__ */ React.createElement(SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.group && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Group by column" }, /* @__PURE__ */ React.createElement(SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.order && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.preview && query.rawSql && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(Preview, { rawSql: query.rawSql, language }))), /* @__PURE__ */ React.createElement(QueryToolbox, { db, query, onValidate, range }));
|
|
21
29
|
};
|
|
22
30
|
|
|
23
31
|
export { VisualEditor };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisualEditor.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type DB, type QueryEditorProps, type QueryRowFilter, type SQLQuery } from '../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { type TimeRange } from '@grafana/data';\nimport { EditorRow } from './EditorRow';\nimport { EditorField } from './EditorField';\nimport { EditorRows } from './EditorRows';\n\ninterface VisualEditorProps extends QueryEditorProps {\n query: SQLQuery;\n db: DB;\n queryRowFilter: QueryRowFilter;\n onChange: (q: SQLQuery) => void;\n onValidate: (isValid: boolean) => void;\n range?: TimeRange;\n}\n\nexport const VisualEditor = ({
|
|
1
|
+
{"version":3,"file":"VisualEditor.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type DB, type QueryEditorProps, type QueryRowFilter, type SQLQuery } from '../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { type TimeRange } from '@grafana/data';\nimport { EditorRow } from './EditorRow';\nimport { EditorField } from './EditorField';\nimport { EditorRows } from './EditorRows';\nimport type { SqlLanguage } from 'sql-formatter';\n\ninterface VisualEditorProps extends QueryEditorProps {\n query: SQLQuery;\n db: DB;\n queryRowFilter: QueryRowFilter;\n onChange: (q: SQLQuery) => void;\n onValidate: (isValid: boolean) => void;\n language?: SqlLanguage;\n range?: TimeRange;\n}\n\nexport const VisualEditor = ({\n query,\n db,\n queryRowFilter,\n onChange,\n onValidate,\n language = 'sql',\n range,\n}: 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 <SQLSelectRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField label=\"Filter by column value\" optional>\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label=\"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} language={language} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAyBO,MAAM,eAAe,CAAC;AAAA,EAC3B,KAAA;AAAA,EACA,EAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,KAAyB;AACvB,EAAA,MAAM,KAAA,GAAQ,SAAS,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,uBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,UAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,iCACC,KAAA,CAAA,aAAA,CAAC,YAAA,EAAA,EAAa,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,IAAI,KAAA,EAAc,aAAA,EAAe,UAAU,EAAA,EAAQ,CAC1F,GACC,cAAA,CAAe,MAAA,oBACd,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,OAAM,wBAAA,EAAyB,QAAA,EAAQ,wBAClD,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,QAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,UAAU,EAAA,EAAQ,CACzF,CACF,CAAA,EAED,cAAA,CAAe,KAAA,wCACb,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,iBAAA,EAAA,kBACjB,KAAA,CAAA,aAAA,CAAC,iBAAc,MAAA,EAAQ,KAAA,CAAM,SAAS,EAAC,EAAG,OAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAC3F,CACF,CAAA,EAED,eAAe,KAAA,oBACd,KAAA,CAAA,aAAA,CAAC,iCACC,KAAA,CAAA,aAAA,CAAC,aAAA,EAAA,EAAc,QAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,UAAU,EAAA,EAAQ,CAC3F,GAED,cAAA,CAAe,OAAA,IAAW,MAAM,MAAA,oBAC/B,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAQ,MAAM,MAAA,EAAQ,QAAA,EAAoB,CACrD,CAEJ,CAAA,kBACA,KAAA,CAAA,aAAA,CAAC,gBAAa,EAAA,EAAQ,KAAA,EAAc,UAAA,EAAwB,KAAA,EAAc,CAC5E,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WhereRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { type SQLExpression } from '../types';\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":["config"],"mappings":";;;;;;AAYO,SAAS,
|
|
1
|
+
{"version":3,"file":"WhereRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { type SQLExpression } from '../types';\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":["config"],"mappings":";;;;;;AAYO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqB,OAAA,CAAQ,OAAO,EAAE,GAAG,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAA,SAAA,CAAU,MAAM;AAhBlB,IAAA,IAAA,EAAA;AAkBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqB,aAAa,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,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,KAAA,CAAM,SAAS,aAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,aAA4BA,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAa,KAAA,CAAM,SAAA,CAAU,WAAA,EAAaA,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,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAU,KAAA,CAAA,aAAA,CAAC,OAAA,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;AAGA,YAAA;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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryEditorRow.js","sources":["../../../../src/components/QueryEditorRow/QueryEditorRow.tsx"],"sourcesContent":["import React from 'react';\nexport interface QueryEditorRowProps {\n label?: string;\n className?: string;\n noFillEnd?: boolean;\n children?: React.ReactNode;\n}\n\nexport const QueryEditorRow = (props: QueryEditorRowProps) => {\n const className: string = props.className ?? 'width-8';\n const noFillEnd: boolean = props.noFillEnd ?? false;\n\n return (\n <div className=\"gf-form\">\n {props.label && <label className={`gf-form-label query-keyword ${className}`}>{props.label}</label>}\n {props.children}\n\n <div className={'gf-form--grow'}>{noFillEnd || <div className={'gf-form-label gf-form-label--grow'}></div>}</div>\n </div>\n );\n};\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"QueryEditorRow.js","sources":["../../../../src/components/QueryEditorRow/QueryEditorRow.tsx"],"sourcesContent":["import React from 'react';\nexport interface QueryEditorRowProps {\n label?: string;\n className?: string;\n noFillEnd?: boolean;\n children?: React.ReactNode;\n}\n\nexport const QueryEditorRow = (props: QueryEditorRowProps) => {\n const className: string = props.className ?? 'width-8';\n const noFillEnd: boolean = props.noFillEnd ?? false;\n\n return (\n <div className=\"gf-form\">\n {props.label && <label className={`gf-form-label query-keyword ${className}`}>{props.label}</label>}\n {props.children}\n\n <div className={'gf-form--grow'}>{noFillEnd || <div className={'gf-form-label gf-form-label--grow'}></div>}</div>\n </div>\n );\n};\n"],"names":[],"mappings":";;AAQO,MAAM,cAAA,GAAiB,CAAC,KAAA,KAA+B;AAR9D,EAAA,IAAA,EAAA,EAAA,EAAA;AASE,EAAA,MAAM,SAAA,GAAA,CAAoB,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB,SAAA;AAC7C,EAAA,MAAM,SAAA,GAAA,CAAqB,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB,KAAA;AAE9C,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAA,EACZ,KAAA,CAAM,KAAA,oBAAS,KAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,CAAA,4BAAA,EAA+B,SAAS,CAAA,CAAA,EAAA,EAAK,KAAA,CAAM,KAAM,CAAA,EAC1F,KAAA,CAAM,QAAA,kBAEP,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,EAAA,EAAkB,SAAA,oBAAa,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mCAAA,EAAqC,CAAO,CAC7G,CAAA;AAEJ;;;;"}
|
|
@@ -3,7 +3,7 @@ import React, { useRef, useMemo, useEffect, useCallback } from 'react';
|
|
|
3
3
|
import { getStatementPosition } from '../standardSql/getStatementPosition.js';
|
|
4
4
|
import { getStandardSuggestions } from '../standardSql/getStandardSuggestions.js';
|
|
5
5
|
import { initSuggestionsKindRegistry } from '../standardSql/suggestionsKindRegistry.js';
|
|
6
|
-
import { SuggestionKind,
|
|
6
|
+
import { SuggestionKind, CompletionItemPriority, CompletionItemKind, CompletionItemInsertTextRule } from '../types.js';
|
|
7
7
|
import { getSuggestionKinds } from '../utils/getSuggestionKind.js';
|
|
8
8
|
import { linkedTokenBuilder } from '../utils/linkedTokenBuilder.js';
|
|
9
9
|
import { getTableToken, defaultTableNameParser } from '../utils/tokenUtils.js';
|
|
@@ -59,7 +59,7 @@ const SQLEditor = ({
|
|
|
59
59
|
CodeEditor,
|
|
60
60
|
{
|
|
61
61
|
height: height || "240px",
|
|
62
|
-
width: width ? `${width - 2}px` :
|
|
62
|
+
width: width ? `${width - 2}px` : void 0,
|
|
63
63
|
language: id,
|
|
64
64
|
value: query,
|
|
65
65
|
onBlur: onSqlBlur,
|
|
@@ -90,12 +90,12 @@ const SQLEditor = ({
|
|
|
90
90
|
), children && children({ formatQuery }));
|
|
91
91
|
};
|
|
92
92
|
const resolveLanguage = (monaco, languageDefinitionProp) => {
|
|
93
|
-
if ((languageDefinitionProp == null ?
|
|
94
|
-
sqlEditorLog(`Loading language '${languageDefinitionProp == null ?
|
|
93
|
+
if ((languageDefinitionProp == null ? void 0 : languageDefinitionProp.id) !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {
|
|
94
|
+
sqlEditorLog(`Loading language '${languageDefinitionProp == null ? void 0 : languageDefinitionProp.id}' from Monaco registry`, false);
|
|
95
95
|
const allLangs = monaco.languages.getLanguages();
|
|
96
|
-
const custom = allLangs.find(({ id }) => id === (languageDefinitionProp == null ?
|
|
96
|
+
const custom = allLangs.find(({ id }) => id === (languageDefinitionProp == null ? void 0 : languageDefinitionProp.id));
|
|
97
97
|
if (!custom) {
|
|
98
|
-
throw Error(`Unknown Monaco language ${languageDefinitionProp == null ?
|
|
98
|
+
throw Error(`Unknown Monaco language ${languageDefinitionProp == null ? void 0 : languageDefinitionProp.id}`);
|
|
99
99
|
}
|
|
100
100
|
return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };
|
|
101
101
|
}
|
|
@@ -117,7 +117,7 @@ const registerLanguageAndSuggestions = async (monaco, l, lid) => {
|
|
|
117
117
|
monaco.languages.registerDocumentFormattingEditProvider(lid, {
|
|
118
118
|
provideDocumentFormattingEdits: (model) => {
|
|
119
119
|
var _a;
|
|
120
|
-
const formatted = (_a = l.formatter) == null ?
|
|
120
|
+
const formatted = (_a = l.formatter) == null ? void 0 : _a.call(l, model.getValue());
|
|
121
121
|
return [
|
|
122
122
|
{
|
|
123
123
|
range: model.getFullModelRange(),
|
|
@@ -224,7 +224,7 @@ function extendStandardRegistries(id, lid, customProvider) {
|
|
|
224
224
|
}
|
|
225
225
|
if (customProvider.customSuggestionKinds) {
|
|
226
226
|
for (const kind of customProvider.customSuggestionKinds()) {
|
|
227
|
-
(_a = kind.applyTo) == null ?
|
|
227
|
+
(_a = kind.applyTo) == null ? void 0 : _a.forEach((applyTo) => {
|
|
228
228
|
const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);
|
|
229
229
|
if (exists) {
|
|
230
230
|
if (exists.kind.indexOf(kind.id) === -1) {
|
|
@@ -234,7 +234,7 @@ function extendStandardRegistries(id, lid, customProvider) {
|
|
|
234
234
|
});
|
|
235
235
|
if (kind.overrideDefault) {
|
|
236
236
|
const stbBehavior = instanceSuggestionsRegistry.get(kind.id);
|
|
237
|
-
if (stbBehavior !==
|
|
237
|
+
if (stbBehavior !== void 0) {
|
|
238
238
|
stbBehavior.suggestions = kind.suggestionsResolver;
|
|
239
239
|
continue;
|
|
240
240
|
}
|
|
@@ -276,9 +276,9 @@ function extendStandardRegistries(id, lid, customProvider) {
|
|
|
276
276
|
var _a2, _b, _c, _d, _e;
|
|
277
277
|
const o = await s(ctx, m);
|
|
278
278
|
const tableToken = getTableToken(ctx.currentToken);
|
|
279
|
-
const tableNameParser = (_b = (_a2 = customProvider.tables) == null ?
|
|
279
|
+
const tableNameParser = (_b = (_a2 = customProvider.tables) == null ? void 0 : _a2.parseName) != null ? _b : defaultTableNameParser;
|
|
280
280
|
const tableIdentifier = tableNameParser(tableToken);
|
|
281
|
-
const oo = ((_e = await ((_d = (_c = customProvider.tables) == null ?
|
|
281
|
+
const oo = ((_e = await ((_d = (_c = customProvider.tables) == null ? void 0 : _c.resolve) == null ? void 0 : _d.call(_c, tableIdentifier))) != null ? _e : []).map((x) => {
|
|
282
282
|
var _a3;
|
|
283
283
|
return {
|
|
284
284
|
label: x.name,
|
|
@@ -301,13 +301,13 @@ function extendStandardRegistries(id, lid, customProvider) {
|
|
|
301
301
|
const o = await s(ctx, m);
|
|
302
302
|
const tableToken = getTableToken(ctx.currentToken);
|
|
303
303
|
let tableIdentifier;
|
|
304
|
-
const tableNameParser = (_b = (_a2 = customProvider.tables) == null ?
|
|
304
|
+
const tableNameParser = (_b = (_a2 = customProvider.tables) == null ? void 0 : _a2.parseName) != null ? _b : defaultTableNameParser;
|
|
305
305
|
if (tableToken && tableToken.value) {
|
|
306
306
|
tableIdentifier = tableNameParser(tableToken);
|
|
307
307
|
}
|
|
308
308
|
let oo = [];
|
|
309
309
|
if (tableIdentifier) {
|
|
310
|
-
const columns = await ((_c = customProvider.columns) == null ?
|
|
310
|
+
const columns = await ((_c = customProvider.columns) == null ? void 0 : _c.resolve(tableIdentifier));
|
|
311
311
|
oo = columns ? columns.map((x) => {
|
|
312
312
|
var _a3;
|
|
313
313
|
return {
|