ydb-embedded-ui 18.3.2 → 18.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/components/ConfirmationDialog/ConfirmationDialog.d.ts +1 -0
- package/dist/components/ConfirmationDialog/ConfirmationDialog.js +3 -2
- package/dist/components/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/components/DiskCapacityInfo/DiskCapacityInfo.d.ts +21 -0
- package/dist/components/DiskCapacityInfo/DiskCapacityInfo.js +129 -0
- package/dist/components/DiskCapacityInfo/DiskCapacityInfo.js.map +1 -0
- package/dist/components/DiskCapacityInfo/i18n/en.json +7 -0
- package/dist/components/DiskCapacityInfo/i18n/index.d.ts +2 -0
- package/dist/components/DiskCapacityInfo/i18n/index.js +5 -0
- package/dist/components/DiskCapacityInfo/i18n/index.js.map +1 -0
- package/dist/components/DiskStateProgressBar/DiskStateProgressBar.d.ts +8 -1
- package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js +24 -14
- package/dist/components/DiskStateProgressBar/DiskStateProgressBar.js.map +1 -1
- package/dist/components/DiskStateProgressBar/DiskStateProgressBar.scss +144 -0
- package/dist/components/HelpMarkWithDocs/HelpMarkWithDocs.d.ts +9 -0
- package/dist/components/HelpMarkWithDocs/HelpMarkWithDocs.js +8 -0
- package/dist/components/HelpMarkWithDocs/HelpMarkWithDocs.js.map +1 -0
- package/dist/components/HelpMarkWithDocs/i18n/en.json +3 -0
- package/dist/components/HelpMarkWithDocs/i18n/index.d.ts +1 -0
- package/dist/components/HelpMarkWithDocs/i18n/index.js +5 -0
- package/dist/components/HelpMarkWithDocs/i18n/index.js.map +1 -0
- package/dist/components/PDiskInfo/PDiskInfo.d.ts +1 -0
- package/dist/components/PDiskInfo/PDiskInfo.js +51 -14
- package/dist/components/PDiskInfo/PDiskInfo.js.map +1 -1
- package/dist/components/PDiskInfo/i18n/index.d.ts +1 -1
- package/dist/components/PDiskPopup/PDiskPopup.d.ts +1 -1
- package/dist/components/PDiskPopup/PDiskPopup.js +13 -4
- package/dist/components/PDiskPopup/PDiskPopup.js.map +1 -1
- package/dist/components/StorageGroupInfo/StorageGroupInfo.js +120 -2
- package/dist/components/StorageGroupInfo/StorageGroupInfo.js.map +1 -1
- package/dist/components/StorageGroupInfo/i18n/en.json +2 -1
- package/dist/components/StorageGroupInfo/i18n/index.d.ts +1 -1
- package/dist/components/TitleWithHelpmark/TitleWithHelpmark.d.ts +5 -2
- package/dist/components/TitleWithHelpmark/TitleWithHelpmark.js +4 -3
- package/dist/components/TitleWithHelpmark/TitleWithHelpmark.js.map +1 -1
- package/dist/components/VDisk/VDisk.js +44 -10
- package/dist/components/VDisk/VDisk.js.map +1 -1
- package/dist/components/VDisk/i18n/en.json +6 -1
- package/dist/components/VDisk/i18n/index.d.ts +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.js +117 -67
- package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
- package/dist/components/VDiskInfo/getVDiskCapacityColumns.d.ts +11 -0
- package/dist/components/VDiskInfo/getVDiskCapacityColumns.js +52 -0
- package/dist/components/VDiskInfo/getVDiskCapacityColumns.js.map +1 -0
- package/dist/components/VDiskPopup/VDiskPopup.d.ts +5 -0
- package/dist/components/VDiskPopup/VDiskPopup.js +18 -7
- package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
- package/dist/components/YDBDefinitionList/YDBDefinitionList.d.ts +2 -1
- package/dist/components/YDBDefinitionList/YDBDefinitionList.js +2 -2
- package/dist/components/YDBDefinitionList/YDBDefinitionList.js.map +1 -1
- package/dist/components/capacityMetricsColumns/columns.js +19 -24
- package/dist/components/capacityMetricsColumns/columns.js.map +1 -1
- package/dist/components/capacityMetricsColumns/constants.d.ts +11 -0
- package/dist/components/capacityMetricsColumns/constants.js +25 -0
- package/dist/components/capacityMetricsColumns/constants.js.map +1 -1
- package/dist/components/capacityMetricsColumns/formatters.d.ts +1 -0
- package/dist/components/capacityMetricsColumns/formatters.js +9 -0
- package/dist/components/capacityMetricsColumns/formatters.js.map +1 -0
- package/dist/components/capacityMetricsColumns/i18n/en.json +9 -1
- package/dist/components/capacityMetricsColumns/i18n/index.d.ts +1 -1
- package/dist/components/nodesColumns/constants.js +1 -1
- package/dist/components/nodesColumns/constants.js.map +1 -1
- package/dist/containers/App/NavigationWrapper.js +1 -1
- package/dist/containers/App/NavigationWrapper.js.map +1 -1
- package/dist/containers/AsideNavigation/i18n/en.json +1 -1
- package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +1 -1
- package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js.map +1 -1
- package/dist/containers/Storage/Disks/Disks.d.ts +2 -2
- package/dist/containers/Storage/Disks/Disks.js +13 -10
- package/dist/containers/Storage/Disks/Disks.js.map +1 -1
- package/dist/containers/Storage/Disks/Disks.scss +20 -0
- package/dist/containers/Storage/Disks/calculateCompactVDiskWidths.d.ts +2 -0
- package/dist/containers/Storage/Disks/calculateCompactVDiskWidths.js +46 -0
- package/dist/containers/Storage/Disks/calculateCompactVDiskWidths.js.map +1 -0
- package/dist/containers/Storage/Disks/constants.d.ts +5 -0
- package/dist/containers/Storage/Disks/constants.js +11 -0
- package/dist/containers/Storage/Disks/constants.js.map +1 -0
- package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js +8 -15
- package/dist/containers/Storage/PaginatedStorageGroups/StorageGroupsControls.js.map +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.d.ts +2 -2
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js +37 -9
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js.map +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.d.ts +5 -0
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.js +31 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/constants.js.map +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/hooks.js +39 -24
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/hooks.js.map +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/en.json +1 -0
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/i18n/index.d.ts +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/types.d.ts +1 -0
- package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js +18 -9
- package/dist/containers/Storage/PaginatedStorageNodesTable/columns/hooks.js.map +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.js.map +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/StorageExpertModePanel.scss +13 -0
- package/dist/containers/Storage/StorageExpertModePanel/components/AllLegend.js +96 -2
- package/dist/containers/Storage/StorageExpertModePanel/components/AllLegend.js.map +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js +2 -5
- package/dist/containers/Storage/StorageExpertModePanel/components/SpaceLegend.js.map +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.d.ts +2 -0
- package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.js +6 -1
- package/dist/containers/Storage/StorageExpertModePanel/components/getSpaceLegendSelection.js.map +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/components/useSpaceLegendSelection.js +3 -3
- package/dist/containers/Storage/StorageExpertModePanel/components/useSpaceLegendSelection.js.map +1 -1
- package/dist/containers/Storage/StorageExpertModePanel/i18n/en.json +13 -0
- package/dist/containers/Storage/StorageExpertModePanel/i18n/index.d.ts +1 -1
- package/dist/containers/Storage/useStorageQueryParams.js +9 -4
- package/dist/containers/Storage/useStorageQueryParams.js.map +1 -1
- package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js +45 -5
- package/dist/containers/Storage/useStorageVDiskDisplayStateGetter.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Consumers/Consumers.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/ManagePartitioningDialog.js +12 -13
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/ManagePartitioningDialog.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/useManagePartitionForm.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/utils.js +2 -2
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/ManagePartitioningDialog/utils.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/PartitionsProgress.js +3 -3
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/PartitionsProgress.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/i18n/en.json +1 -2
- package/dist/containers/Tenant/Diagnostics/Overview/TableInfo/PartitionsProgress/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TopicStats/TopicStats.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/Partitions.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +5 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js +36 -15
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageGroups.d.ts +14 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageGroups.js +38 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageGroups.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageNew.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageNew.js +3 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorageNew.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.d.ts +10 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +12 -8
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/i18n/en.json +15 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/types.d.ts +3 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicProbeQuery.js.map +1 -1
- package/dist/containers/Tenant/ObjectSummary/CreateDirectoryDialog/CreateDirectoryDialog.js +10 -6
- package/dist/containers/Tenant/ObjectSummary/CreateDirectoryDialog/CreateDirectoryDialog.js.map +1 -1
- package/dist/containers/Tenant/ObjectSummary/CreateDirectoryDialog/CreateDirectoryDialog.scss +57 -6
- package/dist/containers/Tenant/ObjectSummary/ObjectSummary.scss +31 -0
- package/dist/containers/Tenant/ObjectSummary/SchemaTree/SchemaTree.js +58 -0
- package/dist/containers/Tenant/ObjectSummary/SchemaTree/SchemaTree.js.map +1 -1
- package/dist/containers/Tenant/Query/Issues/Issues.js +3 -3
- package/dist/containers/Tenant/Query/Issues/Issues.js.map +1 -1
- package/dist/containers/Tenant/Query/Issues/helpers.d.ts +3 -0
- package/dist/containers/Tenant/Query/Issues/helpers.js +40 -0
- package/dist/containers/Tenant/Query/Issues/helpers.js.map +1 -1
- package/dist/containers/Tenant/Query/Issues/helpers.test.d.ts +1 -0
- package/dist/containers/Tenant/Query/Issues/helpers.test.js +94 -0
- package/dist/containers/Tenant/Query/Issues/helpers.test.js.map +1 -0
- package/dist/containers/Tenant/Query/NewSQL/NewSQL.js +1 -1
- package/dist/containers/Tenant/Query/NewSQL/NewSQL.js.map +1 -1
- package/dist/containers/Tenant/Query/Preview/components/TopicPreview.js +1 -1
- package/dist/containers/Tenant/Query/Preview/components/TopicPreview.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js +141 -73
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/QueryEditor.scss +8 -0
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.d.ts +4 -2
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.js +187 -20
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/YqlEditor.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.d.ts +9 -0
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.js +154 -0
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.js.map +1 -0
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.d.ts +1 -0
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.js +153 -0
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.js.map +1 -0
- package/dist/containers/Tenant/Query/QueryEditor/types.d.ts +5 -0
- package/dist/containers/Tenant/Query/QueryEditor/types.js +2 -0
- package/dist/containers/Tenant/Query/QueryEditor/types.js.map +1 -0
- package/dist/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.d.ts +5 -0
- package/dist/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.js +13 -0
- package/dist/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.js.map +1 -0
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.d.ts +6 -3
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.js +10 -5
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/EditorButton.scss +18 -5
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.d.ts +3 -2
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js +23 -12
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.scss +19 -0
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +14 -21
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.d.ts +6 -2
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js +6 -2
- package/dist/containers/Tenant/Query/QueryResult/components/QueryResultError/QueryResultError.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.d.ts +2 -0
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js +1 -1
- package/dist/containers/Tenant/Query/QueryResult/components/ResultSetsViewer/ResultSetsViewer.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/constants.d.ts +3 -0
- package/dist/containers/Tenant/Query/QueryResult/constants.js +35 -0
- package/dist/containers/Tenant/Query/QueryResult/constants.js.map +1 -1
- package/dist/containers/Tenant/Query/i18n/en.json +5 -2
- package/dist/containers/Tenant/Query/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Query/utils/isQueryCancelledError.d.ts +1 -1
- package/dist/containers/Tenant/Query/utils/isQueryCancelledError.js +1 -13
- package/dist/containers/Tenant/Query/utils/isQueryCancelledError.js.map +1 -1
- package/dist/containers/Tenant/TableFormDialog/TableFormDialog.d.ts +19 -0
- package/dist/containers/Tenant/TableFormDialog/TableFormDialog.js +225 -0
- package/dist/containers/Tenant/TableFormDialog/TableFormDialog.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/TableFormDialog.scss +589 -0
- package/dist/containers/Tenant/TableFormDialog/columnValueValidation.d.ts +1 -0
- package/dist/containers/Tenant/TableFormDialog/columnValueValidation.js +179 -0
- package/dist/containers/Tenant/TableFormDialog/columnValueValidation.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.d.ts +11 -0
- package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.js +84 -0
- package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/components/ColumnSelectorField.scss +175 -0
- package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.d.ts +19 -0
- package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.js +115 -0
- package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/components/RangeInputPicker.scss +22 -0
- package/dist/containers/Tenant/TableFormDialog/components/layout.d.ts +15 -0
- package/dist/containers/Tenant/TableFormDialog/components/layout.js +32 -0
- package/dist/containers/Tenant/TableFormDialog/components/layout.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/constants.d.ts +16 -0
- package/dist/containers/Tenant/TableFormDialog/constants.js +99 -0
- package/dist/containers/Tenant/TableFormDialog/constants.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/i18n/en.json +143 -0
- package/dist/containers/Tenant/TableFormDialog/i18n/index.d.ts +2 -0
- package/dist/containers/Tenant/TableFormDialog/i18n/index.js +5 -0
- package/dist/containers/Tenant/TableFormDialog/i18n/index.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/GeneralSection.d.ts +8 -0
- package/dist/containers/Tenant/TableFormDialog/sections/GeneralSection.js +34 -0
- package/dist/containers/Tenant/TableFormDialog/sections/GeneralSection.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/PartitioningSection.d.ts +5 -0
- package/dist/containers/Tenant/TableFormDialog/sections/PartitioningSection.js +28 -0
- package/dist/containers/Tenant/TableFormDialog/sections/PartitioningSection.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/SettingsSection.d.ts +6 -0
- package/dist/containers/Tenant/TableFormDialog/sections/SettingsSection.js +141 -0
- package/dist/containers/Tenant/TableFormDialog/sections/SettingsSection.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/SplitPointDialog.d.ts +22 -0
- package/dist/containers/Tenant/TableFormDialog/sections/SplitPointDialog.js +97 -0
- package/dist/containers/Tenant/TableFormDialog/sections/SplitPointDialog.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/TTLSection.d.ts +6 -0
- package/dist/containers/Tenant/TableFormDialog/sections/TTLSection.js +70 -0
- package/dist/containers/Tenant/TableFormDialog/sections/TTLSection.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/YdbColumnsSection.d.ts +11 -0
- package/dist/containers/Tenant/TableFormDialog/sections/YdbColumnsSection.js +181 -0
- package/dist/containers/Tenant/TableFormDialog/sections/YdbColumnsSection.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/YdbIndexesSection.d.ts +1 -0
- package/dist/containers/Tenant/TableFormDialog/sections/YdbIndexesSection.js +42 -0
- package/dist/containers/Tenant/TableFormDialog/sections/YdbIndexesSection.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/types.d.ts +26 -0
- package/dist/containers/Tenant/TableFormDialog/types.js +3 -0
- package/dist/containers/Tenant/TableFormDialog/types.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/utils.d.ts +41 -0
- package/dist/containers/Tenant/TableFormDialog/utils.js +245 -0
- package/dist/containers/Tenant/TableFormDialog/utils.js.map +1 -0
- package/dist/containers/Tenant/TableFormDialog/validation.d.ts +8 -0
- package/dist/containers/Tenant/TableFormDialog/validation.js +308 -0
- package/dist/containers/Tenant/TableFormDialog/validation.js.map +1 -0
- package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.d.ts +19 -0
- package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.js +296 -0
- package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.js.map +1 -0
- package/dist/containers/Tenant/TopicFormDialog/TopicFormDialog.scss +182 -0
- package/dist/containers/Tenant/TopicFormDialog/i18n/en.json +51 -0
- package/dist/containers/Tenant/TopicFormDialog/i18n/index.d.ts +2 -0
- package/dist/containers/Tenant/TopicFormDialog/i18n/index.js +5 -0
- package/dist/containers/Tenant/TopicFormDialog/i18n/index.js.map +1 -0
- package/dist/containers/Tenant/TopicFormDialog/utils.d.ts +18 -0
- package/dist/containers/Tenant/TopicFormDialog/utils.js +100 -0
- package/dist/containers/Tenant/TopicFormDialog/utils.js.map +1 -0
- package/dist/containers/Tenant/TopicFormDialog/validation.d.ts +3 -0
- package/dist/containers/Tenant/TopicFormDialog/validation.js +88 -0
- package/dist/containers/Tenant/TopicFormDialog/validation.js.map +1 -0
- package/dist/containers/Tenant/i18n/en.json +5 -1
- package/dist/containers/Tenant/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/utils/pathSegmentValidation.d.ts +5 -0
- package/dist/containers/Tenant/utils/pathSegmentValidation.js +15 -0
- package/dist/containers/Tenant/utils/pathSegmentValidation.js.map +1 -0
- package/dist/containers/Tenant/utils/schemaActions.d.ts +4 -0
- package/dist/containers/Tenant/utils/schemaActions.js +103 -14
- package/dist/containers/Tenant/utils/schemaActions.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskPage.js +3 -30
- package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
- package/dist/containers/VDiskPage/useVDiskQueryParams.d.ts +13 -0
- package/dist/containers/VDiskPage/useVDiskQueryParams.js +55 -0
- package/dist/containers/VDiskPage/useVDiskQueryParams.js.map +1 -0
- package/dist/store/reducers/pdisk/utils.js +4 -4
- package/dist/store/reducers/pdisk/utils.js.map +1 -1
- package/dist/store/reducers/query/api.d.ts +2 -1
- package/dist/store/reducers/query/api.js +107 -48
- package/dist/store/reducers/query/api.js.map +1 -1
- package/dist/store/reducers/query/parsers/preparePlanData.js +8 -1
- package/dist/store/reducers/query/parsers/preparePlanData.js.map +1 -1
- package/dist/store/reducers/query/slice.d.ts +8 -9
- package/dist/store/reducers/query/slice.js +5 -0
- package/dist/store/reducers/query/slice.js.map +1 -1
- package/dist/store/reducers/query/streaming/reducers.d.ts +3 -0
- package/dist/store/reducers/query/streaming/reducers.js +6 -6
- package/dist/store/reducers/query/streaming/reducers.js.map +1 -1
- package/dist/store/reducers/query/types.d.ts +8 -4
- package/dist/store/reducers/query/utils.d.ts +10 -2
- package/dist/store/reducers/query/utils.js +37 -6
- package/dist/store/reducers/query/utils.js.map +1 -1
- package/dist/store/reducers/storage/prepareGroupsDisks.d.ts +10 -3
- package/dist/store/reducers/storage/prepareGroupsDisks.js +43 -6
- package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
- package/dist/store/reducers/storage/types.d.ts +1 -0
- package/dist/store/reducers/storage/utils.js +4 -7
- package/dist/store/reducers/storage/utils.js.map +1 -1
- package/dist/store/reducers/table/constants.d.ts +6 -0
- package/dist/store/reducers/table/constants.js +36 -0
- package/dist/store/reducers/table/constants.js.map +1 -0
- package/dist/store/reducers/table/table.d.ts +19 -0
- package/dist/store/reducers/table/table.js +104 -0
- package/dist/store/reducers/table/table.js.map +1 -0
- package/dist/store/reducers/table/types.d.ts +193 -0
- package/dist/store/reducers/table/types.js +12 -0
- package/dist/store/reducers/table/types.js.map +1 -0
- package/dist/store/reducers/table/utils.d.ts +17 -0
- package/dist/store/reducers/table/utils.js +485 -0
- package/dist/store/reducers/table/utils.js.map +1 -0
- package/dist/store/reducers/topic/topic.d.ts +1762 -0
- package/dist/store/reducers/topic/topic.js +172 -0
- package/dist/store/reducers/topic/topic.js.map +1 -0
- package/dist/store/reducers/topic/utils.d.ts +23 -0
- package/dist/store/reducers/topic/utils.js +75 -0
- package/dist/store/reducers/topic/utils.js.map +1 -0
- package/dist/types/api/pdisk.d.ts +6 -1
- package/dist/types/api/pdisk.js.map +1 -1
- package/dist/types/api/storage.d.ts +3 -1
- package/dist/types/api/storage.js.map +1 -1
- package/dist/types/api/topic.d.ts +18 -0
- package/dist/types/api/topic.js +8 -0
- package/dist/types/api/topic.js.map +1 -1
- package/dist/types/api/vdisk.d.ts +8 -0
- package/dist/types/api/vdisk.js.map +1 -1
- package/dist/uiFactory/types.d.ts +5 -0
- package/dist/uiFactory/uiFactory.d.ts +4 -1
- package/dist/uiFactory/uiFactory.js +8 -1
- package/dist/uiFactory/uiFactory.js.map +1 -1
- package/dist/utils/capacityAlerts.d.ts +1 -0
- package/dist/utils/capacityAlerts.js +3 -0
- package/dist/utils/capacityAlerts.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/disks/displayState.d.ts +5 -0
- package/dist/utils/disks/displayState.js.map +1 -1
- package/dist/utils/disks/iconCalculators.d.ts +1 -3
- package/dist/utils/disks/iconCalculators.js +5 -6
- package/dist/utils/disks/iconCalculators.js.map +1 -1
- package/dist/utils/disks/prepareDisks.d.ts +1 -1
- package/dist/utils/disks/prepareDisks.js +44 -3
- package/dist/utils/disks/prepareDisks.js.map +1 -1
- package/dist/utils/disks/severityCalculators.d.ts +1 -4
- package/dist/utils/disks/severityCalculators.js +2 -6
- package/dist/utils/disks/severityCalculators.js.map +1 -1
- package/dist/utils/disks/types.d.ts +8 -0
- package/dist/utils/emptyDataPlaceholder.d.ts +1 -0
- package/dist/utils/emptyDataPlaceholder.js +2 -0
- package/dist/utils/emptyDataPlaceholder.js.map +1 -0
- package/dist/utils/hooks/useSelectedColumns.d.ts +3 -0
- package/dist/utils/hooks/useSelectedColumns.js +18 -0
- package/dist/utils/hooks/useSelectedColumns.js.map +1 -1
- package/dist/utils/query.d.ts +4 -1
- package/dist/utils/query.js +34 -1
- package/dist/utils/query.js.map +1 -1
- package/dist/utils/storageMetrics.d.ts +5 -1
- package/dist/utils/storageMetrics.js +35 -4
- package/dist/utils/storageMetrics.js.map +1 -1
- package/dist/utils/utils.js +2 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/store/reducers/topic.d.ts +0 -1291
- package/dist/store/reducers/topic.js +0 -83
- package/dist/store/reducers/topic.js.map +0 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import * as yqlAutocomplete from '@gravity-ui/websql-autocomplete/yql';
|
|
2
|
+
import { extractYqlStatements, findYqlStatementAtOffset } from './currentStatement';
|
|
3
|
+
jest.mock('@gravity-ui/websql-autocomplete/yql', () => {
|
|
4
|
+
const actual = jest.requireActual('@gravity-ui/websql-autocomplete/yql');
|
|
5
|
+
return {
|
|
6
|
+
...actual,
|
|
7
|
+
tokenizeYqlQuery: jest.fn(actual.tokenizeYqlQuery),
|
|
8
|
+
};
|
|
9
|
+
});
|
|
10
|
+
describe('current YQL statement', () => {
|
|
11
|
+
test.each([
|
|
12
|
+
['; SELECT 1;', ['SELECT 1;']],
|
|
13
|
+
['SELECT 1;;; SELECT 2;', ['SELECT 1;', 'SELECT 2;']],
|
|
14
|
+
])('filters empty separator statements from %s', (query, expectedStatements) => {
|
|
15
|
+
const statements = extractYqlStatements(query);
|
|
16
|
+
expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(expectedStatements);
|
|
17
|
+
});
|
|
18
|
+
test('finds each statement and excludes whitespace between statements', () => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const query = 'SELECT 1;\n\nSELECT 2;';
|
|
21
|
+
const statements = extractYqlStatements(query);
|
|
22
|
+
expect((_a = findYqlStatementAtOffset(query, 2, statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 1;');
|
|
23
|
+
expect((_b = findYqlStatementAtOffset(query, query.indexOf('SELECT 2'), statements)) === null || _b === void 0 ? void 0 : _b.text).toBe('SELECT 2;');
|
|
24
|
+
expect(findYqlStatementAtOffset(query, query.indexOf('\n\n') + 1, statements)).toBeUndefined();
|
|
25
|
+
});
|
|
26
|
+
test('does not split semicolons inside strings and comments', () => {
|
|
27
|
+
const query = '/* ignored; */ SELECT "a;b";\n-- gap;\nSELECT 2;';
|
|
28
|
+
const statements = extractYqlStatements(query);
|
|
29
|
+
expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(['SELECT "a;b";', 'SELECT 2;']);
|
|
30
|
+
});
|
|
31
|
+
test.each([
|
|
32
|
+
[
|
|
33
|
+
'anonymous action',
|
|
34
|
+
'SELECT 0;\nDO BEGIN\n SELECT 1;\n SELECT 2;\nEND DO;\nSELECT 3;',
|
|
35
|
+
['SELECT 0;', 'DO BEGIN\n SELECT 1;\n SELECT 2;\nEND DO;', 'SELECT 3;'],
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
'action definition',
|
|
39
|
+
'DEFINE ACTION $a() AS DO BEGIN SELECT 1; SELECT 2; END DO; END DEFINE;\nDO $a();',
|
|
40
|
+
['DEFINE ACTION $a() AS DO BEGIN SELECT 1; SELECT 2; END DO; END DEFINE;', 'DO $a();'],
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
'subquery definition',
|
|
44
|
+
'DEFINE SUBQUERY $s() AS SELECT 1; SELECT 2; END DEFINE;\nSELECT 3;',
|
|
45
|
+
['DEFINE SUBQUERY $s() AS SELECT 1; SELECT 2; END DEFINE;', 'SELECT 3;'],
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
'streaming query body',
|
|
49
|
+
'CREATE STREAMING QUERY q AS DO BEGIN INSERT INTO sink SELECT * FROM source; END DO;',
|
|
50
|
+
['CREATE STREAMING QUERY q AS DO BEGIN INSERT INTO sink SELECT * FROM source; END DO;'],
|
|
51
|
+
],
|
|
52
|
+
])('keeps each %s intact', (_name, query, expectedStatements) => {
|
|
53
|
+
const statements = extractYqlStatements(query);
|
|
54
|
+
expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(expectedStatements);
|
|
55
|
+
});
|
|
56
|
+
test('keeps a lambda definition separate from the following statement', () => {
|
|
57
|
+
const query = `$l = ($x) -> {
|
|
58
|
+
return [
|
|
59
|
+
<|
|
|
60
|
+
offset:$x._offset,
|
|
61
|
+
message:$x._data
|
|
62
|
+
|>
|
|
63
|
+
];
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
ALTER TRANSFER transfer
|
|
67
|
+
SET USING $l;`;
|
|
68
|
+
const statements = extractYqlStatements(query);
|
|
69
|
+
expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual([
|
|
70
|
+
`$l = ($x) -> {
|
|
71
|
+
return [
|
|
72
|
+
<|
|
|
73
|
+
offset:$x._offset,
|
|
74
|
+
message:$x._data
|
|
75
|
+
|>
|
|
76
|
+
];
|
|
77
|
+
};`,
|
|
78
|
+
`ALTER TRANSFER transfer
|
|
79
|
+
SET USING $l;`,
|
|
80
|
+
]);
|
|
81
|
+
});
|
|
82
|
+
test('extracts a large flat script without the YQL tokenizer', () => {
|
|
83
|
+
const tokenizeYqlQueryMock = jest.mocked(yqlAutocomplete.tokenizeYqlQuery);
|
|
84
|
+
tokenizeYqlQueryMock.mockClear();
|
|
85
|
+
const query = new Array(400).fill('SELECT 1;').join('');
|
|
86
|
+
const statements = extractYqlStatements(query);
|
|
87
|
+
expect(statements).toHaveLength(400);
|
|
88
|
+
expect(query.slice(statements[0].startIndex, statements[0].endIndex)).toBe('SELECT 1;');
|
|
89
|
+
expect(query.slice(statements[399].startIndex, statements[399].endIndex)).toBe('SELECT 1;');
|
|
90
|
+
expect(tokenizeYqlQueryMock).not.toHaveBeenCalled();
|
|
91
|
+
});
|
|
92
|
+
test('uses the YQL tokenizer for unsupported lexer characters', () => {
|
|
93
|
+
const tokenizeYqlQueryMock = jest.mocked(yqlAutocomplete.tokenizeYqlQuery);
|
|
94
|
+
tokenizeYqlQueryMock.mockClear();
|
|
95
|
+
const query = '# SELECT 1;';
|
|
96
|
+
const statements = extractYqlStatements(query);
|
|
97
|
+
expect(statements.map(({ startIndex, endIndex }) => query.slice(startIndex, endIndex))).toEqual(['SELECT 1;']);
|
|
98
|
+
expect(tokenizeYqlQueryMock).toHaveBeenCalledTimes(1);
|
|
99
|
+
});
|
|
100
|
+
test('distinguishes statements on the same line', () => {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
const query = 'SELECT 1; SELECT 2;';
|
|
103
|
+
const statements = extractYqlStatements(query);
|
|
104
|
+
expect((_a = findYqlStatementAtOffset(query, query.indexOf('1'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 1;');
|
|
105
|
+
expect((_b = findYqlStatementAtOffset(query, query.indexOf('2'), statements)) === null || _b === void 0 ? void 0 : _b.text).toBe('SELECT 2;');
|
|
106
|
+
});
|
|
107
|
+
test('prefers a statement starting at an adjacent statement boundary', () => {
|
|
108
|
+
var _a;
|
|
109
|
+
const query = 'SELECT 1;SELECT 2;';
|
|
110
|
+
const statements = extractYqlStatements(query);
|
|
111
|
+
expect((_a = findYqlStatementAtOffset(query, query.indexOf('SELECT 2'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 2;');
|
|
112
|
+
});
|
|
113
|
+
test('uses JavaScript offsets correctly with Unicode', () => {
|
|
114
|
+
var _a;
|
|
115
|
+
const query = 'SELECT "😀;";\nSELECT 2;';
|
|
116
|
+
const statements = extractYqlStatements(query);
|
|
117
|
+
expect((_a = findYqlStatementAtOffset(query, query.indexOf('SELECT 2'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 2;');
|
|
118
|
+
});
|
|
119
|
+
test('returns the recoverable incomplete statement', () => {
|
|
120
|
+
var _a;
|
|
121
|
+
const query = 'SELECT 1;\nSEL';
|
|
122
|
+
const statements = extractYqlStatements(query);
|
|
123
|
+
expect((_a = findYqlStatementAtOffset(query, query.length - 1, statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SEL');
|
|
124
|
+
});
|
|
125
|
+
test('finds a multiline statement', () => {
|
|
126
|
+
var _a;
|
|
127
|
+
const query = 'SELECT\n 1;\n\nSELECT 2;';
|
|
128
|
+
const statements = extractYqlStatements(query);
|
|
129
|
+
expect((_a = findYqlStatementAtOffset(query, query.indexOf('1'), statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT\n 1;');
|
|
130
|
+
});
|
|
131
|
+
test('returns no statement for standalone comments', () => {
|
|
132
|
+
const query = '-- comment only\n/* another comment */';
|
|
133
|
+
const statements = extractYqlStatements(query);
|
|
134
|
+
expect(findYqlStatementAtOffset(query, query.indexOf('comment'), statements)).toBeUndefined();
|
|
135
|
+
});
|
|
136
|
+
test('includes the exact end of a semicolon-terminated statement', () => {
|
|
137
|
+
var _a;
|
|
138
|
+
const query = 'SELECT 1;';
|
|
139
|
+
const statements = extractYqlStatements(query);
|
|
140
|
+
expect((_a = findYqlStatementAtOffset(query, query.length, statements)) === null || _a === void 0 ? void 0 : _a.text).toBe('SELECT 1;');
|
|
141
|
+
});
|
|
142
|
+
test('does not skip whitespace after the terminating semicolon', () => {
|
|
143
|
+
const query = 'SELECT 1; ';
|
|
144
|
+
const statements = extractYqlStatements(query);
|
|
145
|
+
expect(findYqlStatementAtOffset(query, query.length, statements)).toBeUndefined();
|
|
146
|
+
});
|
|
147
|
+
test('keeps an unterminated statement end exclusive', () => {
|
|
148
|
+
const query = 'SELECT 1';
|
|
149
|
+
const statements = extractYqlStatements(query);
|
|
150
|
+
expect(findYqlStatementAtOffset(query, query.length, statements)).toBeUndefined();
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=currentStatement.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currentStatement.test.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/YqlEditor/currentStatement.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditor/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { QueryAction } from '../../../../../types/store/query';
|
|
2
|
+
import { reachMetricaGoal } from '../../../../../utils/yaMetrica';
|
|
3
|
+
type MetricaParams = NonNullable<Parameters<typeof reachMetricaGoal>[1]>;
|
|
4
|
+
export declare function reachExplainQueryMetricaGoals(actionType: QueryAction, params: MetricaParams): void;
|
|
5
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QUERY_ACTIONS } from '../../../../../utils/query';
|
|
2
|
+
import { reachMetricaGoal } from '../../../../../utils/yaMetrica';
|
|
3
|
+
export function reachExplainQueryMetricaGoals(actionType, params) {
|
|
4
|
+
const metricaParams = {
|
|
5
|
+
...params,
|
|
6
|
+
actionType: actionType === QUERY_ACTIONS.explainAnalyze ? 'explainAnalyze' : actionType,
|
|
7
|
+
};
|
|
8
|
+
reachMetricaGoal('runQuery', metricaParams);
|
|
9
|
+
if (actionType === QUERY_ACTIONS.explainAnalyze) {
|
|
10
|
+
reachMetricaGoal('explainAnalyzeQuery', metricaParams);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=reachExplainQueryMetricaGoals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reachExplainQueryMetricaGoals.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Query/QueryEditor/utils/reachExplainQueryMetricaGoals.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,gCAAgC,CAAC;AAIhE,MAAM,UAAU,6BAA6B,CAAC,UAAuB,EAAE,MAAqB;IACxF,MAAM,aAAa,GAAG;QAClB,GAAG,MAAM;QACT,UAAU,EAAE,UAAU,KAAK,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU;KAC1F,CAAC;IAEF,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAE5C,IAAI,UAAU,KAAK,aAAa,CAAC,cAAc,EAAE,CAAC;QAC9C,gBAAgB,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;IAC3D,CAAC;AACL,CAAC"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { ButtonProps } from '@gravity-ui/uikit';
|
|
2
2
|
import './EditorButton.scss';
|
|
3
|
+
type StopButtonProps = ButtonProps & {
|
|
4
|
+
error?: boolean;
|
|
5
|
+
replacedAction?: 'run' | 'explain' | 'explainAnalyze';
|
|
6
|
+
};
|
|
3
7
|
interface SettingsButtonProps {
|
|
4
8
|
onClick: () => void;
|
|
5
9
|
isLoading: boolean;
|
|
6
10
|
}
|
|
7
11
|
export declare const EditorButton: {
|
|
8
12
|
Run: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
Stop: ({ error, ...props }:
|
|
10
|
-
error?: boolean;
|
|
11
|
-
}) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
Stop: ({ error, replacedAction, ...props }: StopButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
14
|
Explain: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
ExplainAnalyze: (props: ButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
16
|
Settings: ({ onClick, isLoading }: SettingsButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
17
|
};
|
|
15
18
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import { Button, Icon
|
|
2
|
+
import { Gear, PlayFill, StopFill } from '@gravity-ui/icons';
|
|
3
|
+
import { ActionTooltip, Button, Icon } from '@gravity-ui/uikit';
|
|
4
4
|
import QuerySettingsDescription from '../../../../components/QuerySettingsDescription/QuerySettingsDescription';
|
|
5
5
|
import { cn } from '../../../../utils/cn';
|
|
6
6
|
import { useChangedQuerySettings } from '../../../../utils/hooks/useChangedQuerySettings';
|
|
@@ -8,19 +8,24 @@ import i18n from '../i18n';
|
|
|
8
8
|
import './EditorButton.scss';
|
|
9
9
|
const b = cn('ydb-query-editor-button');
|
|
10
10
|
const Run = (props) => (_jsxs(Button, { ...props, className: b('run-button'), children: [_jsx(Icon, { data: PlayFill, size: 16 }), i18n('action.run')] }));
|
|
11
|
-
const Stop = ({ error, ...props }) => (_jsxs(Button, { ...props, className: b('stop-button', {
|
|
12
|
-
|
|
11
|
+
const Stop = ({ error, replacedAction, ...props }) => (_jsxs(Button, { ...props, className: b('stop-button', {
|
|
12
|
+
error,
|
|
13
|
+
'explain-analyze': replacedAction === 'explainAnalyze',
|
|
14
|
+
}), children: [_jsx(Icon, { data: StopFill, size: 16 }), i18n('action.stop')] }));
|
|
15
|
+
const Explain = (props) => (_jsx(Button, { ...props, className: b('explain-button'), children: i18n('action.explain') }));
|
|
16
|
+
const ExplainAnalyze = (props) => (_jsx(ActionTooltip, { title: i18n('explain-analyze.tooltip.title'), description: i18n('explain-analyze.tooltip.description'), openDelay: 0, placement: ['top-start'], children: _jsx(Button, { ...props, className: b('explain-analyze-button'), children: i18n('action.explain-analyze') }) }));
|
|
13
17
|
const Settings = ({ onClick, isLoading }) => {
|
|
14
18
|
const { changedCurrentSettings, changedCurrentSettingsDescriptions } = useChangedQuerySettings();
|
|
15
19
|
const extraGearProps = changedCurrentSettings.length > 0
|
|
16
20
|
? { view: 'outlined-info', selected: true }
|
|
17
21
|
: null;
|
|
18
|
-
return (_jsx(
|
|
22
|
+
return (_jsx(ActionTooltip, { disabled: changedCurrentSettings.length === 0, title: i18n('gear.tooltip'), description: _jsx(QuerySettingsDescription, { prefix: "", querySettings: changedCurrentSettingsDescriptions }), openDelay: 0, placement: ['top-start'], children: _jsxs(Button, { onClick: onClick, loading: isLoading, className: b('gear-button'), ...extraGearProps, children: [_jsx(Icon, { data: Gear, size: 16 }), extraGearProps ? (_jsxs("div", { className: b('changed-settings'), children: ["(", changedCurrentSettings.length, ")"] })) : null] }) }));
|
|
19
23
|
};
|
|
20
24
|
export const EditorButton = {
|
|
21
25
|
Run,
|
|
22
26
|
Stop,
|
|
23
27
|
Explain,
|
|
28
|
+
ExplainAnalyze,
|
|
24
29
|
Settings,
|
|
25
30
|
};
|
|
26
31
|
//# sourceMappingURL=EditorButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorButton.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/EditorButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"EditorButton.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/EditorButton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
@use '../../../../styles/mixins.scss';
|
|
2
2
|
|
|
3
3
|
.ydb-query-editor-button {
|
|
4
|
-
&
|
|
5
|
-
width:
|
|
4
|
+
&__run-button {
|
|
5
|
+
width: 76px;
|
|
6
|
+
min-width: 76px;
|
|
7
|
+
max-width: 76px;
|
|
6
8
|
}
|
|
7
9
|
|
|
8
|
-
&
|
|
9
|
-
|
|
10
|
-
width:
|
|
10
|
+
&__explain-analyze-button {
|
|
11
|
+
width: 111px;
|
|
12
|
+
min-width: 111px;
|
|
13
|
+
max-width: 111px;
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
&__stop-button {
|
|
17
|
+
width: 76px;
|
|
18
|
+
min-width: 76px;
|
|
19
|
+
max-width: 76px;
|
|
20
|
+
|
|
21
|
+
&_explain-analyze {
|
|
22
|
+
width: 111px;
|
|
23
|
+
min-width: 111px;
|
|
24
|
+
max-width: 111px;
|
|
25
|
+
}
|
|
26
|
+
|
|
14
27
|
.g-root_theme_dark &,
|
|
15
28
|
.g-root_theme_dark-hc & {
|
|
16
29
|
--g-button-text-color: var(--g-color-text-dark-primary);
|
|
@@ -7,10 +7,11 @@ interface QueryEditorControlsProps {
|
|
|
7
7
|
highlightedAction: QueryAction;
|
|
8
8
|
queryId?: string;
|
|
9
9
|
database: string;
|
|
10
|
-
|
|
10
|
+
isCurrentQueryStreaming?: boolean;
|
|
11
11
|
handleGetExplainQueryClick: (text: string) => void;
|
|
12
|
+
handleGetExplainAnalyzeQueryClick: (text: string) => void;
|
|
12
13
|
handleSendExecuteClick: (text: string) => void;
|
|
13
14
|
onSettingsButtonClick: () => void;
|
|
14
15
|
}
|
|
15
|
-
export declare const QueryEditorControls: ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database,
|
|
16
|
+
export declare const QueryEditorControls: ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database, isCurrentQueryStreaming, handleSendExecuteClick, onSettingsButtonClick, handleGetExplainQueryClick, handleGetExplainAnalyzeQueryClick, }: QueryEditorControlsProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
17
|
export {};
|
|
@@ -5,6 +5,7 @@ import { selectActiveTabId, selectUserInput } from '../../../../store/reducers/q
|
|
|
5
5
|
import { cn } from '../../../../utils/cn';
|
|
6
6
|
import createToast from '../../../../utils/createToast';
|
|
7
7
|
import { useTypedSelector } from '../../../../utils/hooks';
|
|
8
|
+
import { QUERY_ACTIONS } from '../../../../utils/query';
|
|
8
9
|
import { reachMetricaGoal } from '../../../../utils/yaMetrica';
|
|
9
10
|
import { NewSQL } from '../NewSQL/NewSQL';
|
|
10
11
|
import { queryExecutionManagerInstance } from '../QueryEditor/utils/queryExecutionManager';
|
|
@@ -14,15 +15,21 @@ import { EditorButton } from './EditorButton';
|
|
|
14
15
|
import './QueryEditorControls.scss';
|
|
15
16
|
const b = cn('ydb-query-editor-controls');
|
|
16
17
|
const STOP_AUTO_HIDE_TIMEOUT = 5000;
|
|
18
|
+
const actionButtonComponents = {
|
|
19
|
+
run: EditorButton.Run,
|
|
20
|
+
explain: EditorButton.Explain,
|
|
21
|
+
explainAnalyze: EditorButton.ExplainAnalyze,
|
|
22
|
+
};
|
|
17
23
|
const ActionButton = ({ type, isHighlighted, isLoading, isStoppable, controlsDisabled, onActionClick, renderStopButton, }) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
const ButtonComponent = actionButtonComponents[type];
|
|
25
|
+
const button = isStoppable && isLoading && isHighlighted ? (renderStopButton(type)) : (_jsx(ButtonComponent, { onClick: onActionClick, disabled: controlsDisabled, loading: isLoading, view: isHighlighted ? 'action' : undefined }));
|
|
26
|
+
return (_jsx("div", { className: b('action-button', {
|
|
27
|
+
run: type === 'run',
|
|
28
|
+
'explain-analyze': type === 'explainAnalyze',
|
|
29
|
+
}), children: button }));
|
|
23
30
|
};
|
|
24
31
|
const CANCEL_ERROR_ANIMATION_DURATION = 500;
|
|
25
|
-
export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database,
|
|
32
|
+
export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highlightedAction, queryId, database, isCurrentQueryStreaming, handleSendExecuteClick, onSettingsButtonClick, handleGetExplainQueryClick, handleGetExplainAnalyzeQueryClick, }) => {
|
|
26
33
|
const input = useTypedSelector(selectUserInput);
|
|
27
34
|
const activeTabId = useTypedSelector(selectActiveTabId);
|
|
28
35
|
const [sendCancelQuery, cancelQueryResponse] = cancelQueryApi.useCancelQueryMutation();
|
|
@@ -31,7 +38,7 @@ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highligh
|
|
|
31
38
|
const onStopButtonClick = React.useCallback(async () => {
|
|
32
39
|
reachMetricaGoal('stopQuery');
|
|
33
40
|
try {
|
|
34
|
-
if (
|
|
41
|
+
if (isCurrentQueryStreaming) {
|
|
35
42
|
if (!activeTabId) {
|
|
36
43
|
return;
|
|
37
44
|
}
|
|
@@ -57,15 +64,19 @@ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highligh
|
|
|
57
64
|
setCancelQueryError(false);
|
|
58
65
|
}, CANCEL_ERROR_ANIMATION_DURATION);
|
|
59
66
|
}
|
|
60
|
-
}, [
|
|
61
|
-
const isRunHighlighted = highlightedAction ===
|
|
62
|
-
const isExplainHighlighted = highlightedAction ===
|
|
67
|
+
}, [isCurrentQueryStreaming, queryId, sendCancelQuery, database, activeTabId]);
|
|
68
|
+
const isRunHighlighted = highlightedAction === QUERY_ACTIONS.execute;
|
|
69
|
+
const isExplainHighlighted = highlightedAction === QUERY_ACTIONS.explain;
|
|
70
|
+
const isExplainAnalyzeHighlighted = highlightedAction === QUERY_ACTIONS.explainAnalyze;
|
|
63
71
|
const onRunButtonClick = React.useCallback(() => {
|
|
64
72
|
handleSendExecuteClick(input);
|
|
65
73
|
}, [handleSendExecuteClick, input]);
|
|
66
74
|
const onExplainButtonClick = React.useCallback(() => {
|
|
67
75
|
handleGetExplainQueryClick(input);
|
|
68
76
|
}, [handleGetExplainQueryClick, input]);
|
|
77
|
+
const onExplainAnalyzeButtonClick = React.useCallback(() => {
|
|
78
|
+
handleGetExplainAnalyzeQueryClick(input);
|
|
79
|
+
}, [handleGetExplainAnalyzeQueryClick, input]);
|
|
69
80
|
React.useEffect(() => {
|
|
70
81
|
return () => {
|
|
71
82
|
if (cancelErrorAnimationRef.current) {
|
|
@@ -74,7 +85,7 @@ export const QueryEditorControls = ({ disabled, isLoading, isStoppable, highligh
|
|
|
74
85
|
};
|
|
75
86
|
}, []);
|
|
76
87
|
const controlsDisabled = disabled || !input;
|
|
77
|
-
const renderStopButton = () => (_jsx(EditorButton.Stop, { loading: cancelQueryResponse.isLoading, error: cancelQueryError, onClick: onStopButtonClick }));
|
|
78
|
-
return (_jsxs("div", { className: b(), children: [_jsxs("div", { className: b('left'), children: [_jsx(ActionButton, { type: "run", isHighlighted: isRunHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onRunButtonClick, renderStopButton: renderStopButton }), _jsx(ActionButton, { type: "explain", isHighlighted: isExplainHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onExplainButtonClick, renderStopButton: renderStopButton }), _jsx(EditorButton.Settings, { onClick: onSettingsButtonClick, isLoading: isLoading })] }), _jsxs("div", { className: b('right'), children: [_jsx(NewSQL, { database: database }), _jsx(SaveQuery, { buttonProps: { disabled } })] })] }));
|
|
88
|
+
const renderStopButton = (replacedAction) => (_jsx(EditorButton.Stop, { loading: cancelQueryResponse.isLoading, error: cancelQueryError, replacedAction: replacedAction, onClick: onStopButtonClick }));
|
|
89
|
+
return (_jsxs("div", { className: b(), children: [_jsxs("div", { className: b('left'), children: [_jsx(ActionButton, { type: "run", isHighlighted: isRunHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onRunButtonClick, renderStopButton: renderStopButton }), _jsx(ActionButton, { type: "explain", isHighlighted: isExplainHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onExplainButtonClick, renderStopButton: renderStopButton }), _jsx(ActionButton, { type: "explainAnalyze", isHighlighted: isExplainAnalyzeHighlighted, isLoading: isLoading, isStoppable: isStoppable, controlsDisabled: controlsDisabled, onActionClick: onExplainAnalyzeButtonClick, renderStopButton: renderStopButton }), _jsx(EditorButton.Settings, { onClick: onSettingsButtonClick, isLoading: isLoading })] }), _jsxs("div", { className: b('right'), children: [_jsx(NewSQL, { database: database }), _jsx(SaveQuery, { buttonProps: { disabled } })] })] }));
|
|
79
90
|
};
|
|
80
91
|
//# sourceMappingURL=QueryEditorControls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryEditorControls.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,cAAc,EAAC,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAC,MAAM,wCAAwC,CAAC;AAE1F,OAAO,EAAC,EAAE,EAAC,MAAM,sBAAsB,CAAC;AACxC,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAC,6BAA6B,EAAC,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,IAAI,MAAM,SAAS,CAAC;AAE3B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,4BAA4B,CAAC;AAEpC,MAAM,CAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryEditorControls.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Query/QueryEditorControls/QueryEditorControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,25 @@
|
|
|
13
13
|
gap: 12px;
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
&__action-button {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex: none;
|
|
19
|
+
|
|
20
|
+
&_run {
|
|
21
|
+
width: 76px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&_explain-analyze {
|
|
25
|
+
width: 111px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
> .g-button {
|
|
29
|
+
width: 100%;
|
|
30
|
+
min-width: 0;
|
|
31
|
+
max-width: 100%;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
16
35
|
&__mode-selector {
|
|
17
36
|
$b: &;
|
|
18
37
|
|
|
@@ -11,6 +11,7 @@ import { SETTING_KEYS } from '../../../../store/reducers/settings/constants';
|
|
|
11
11
|
import { cn } from '../../../../utils/cn';
|
|
12
12
|
import { useSetting, useTypedDispatch, useTypedSelector } from '../../../../utils/hooks';
|
|
13
13
|
import { getIllustration } from '../../../../utils/illustrations';
|
|
14
|
+
import { isExecutionQueryAction } from '../../../../utils/query';
|
|
14
15
|
import { PaneVisibilityToggleButtons } from '../../utils/paneVisibilityToggleHelpers';
|
|
15
16
|
import { QuerySettingsBanner } from '../QuerySettingsBanner/QuerySettingsBanner';
|
|
16
17
|
import { QueryStoppedBanner } from '../QueryStoppedBanner/QueryStoppedBanner';
|
|
@@ -21,7 +22,7 @@ import { QueryInfoDropdown } from './components/QueryInfoDropdown/QueryInfoDropd
|
|
|
21
22
|
import { QueryResultError } from './components/QueryResultError/QueryResultError';
|
|
22
23
|
import { ResultSetsViewer } from './components/ResultSetsViewer/ResultSetsViewer';
|
|
23
24
|
import { TraceButton } from './components/TraceButton/TraceButton';
|
|
24
|
-
import { RESULT_OPTIONS_IDS } from './constants';
|
|
25
|
+
import { RESULT_OPTIONS_IDS, getDefaultResultSection, getResultSections } from './constants';
|
|
25
26
|
import i18n from './i18n';
|
|
26
27
|
import './QueryResultViewer.scss';
|
|
27
28
|
const b = cn('ydb-query-result');
|
|
@@ -46,15 +47,13 @@ const RESULT_OPTIONS_TITLES = {
|
|
|
46
47
|
return i18n('action.ast');
|
|
47
48
|
},
|
|
48
49
|
};
|
|
49
|
-
const EXECUTE_SECTIONS = ['result', 'schema', 'simplified', 'stats'];
|
|
50
|
-
const EXPLAIN_SECTIONS = ['schema', 'simplified', 'json', 'ast'];
|
|
51
50
|
export function QueryResultViewer({ result, resultType = 'execute', isResultsCollapsed, theme, database, queryText, tableSettings, onCollapseResults, onExpandResults, }) {
|
|
52
51
|
var _a;
|
|
53
52
|
const InternalErrorImage = getIllustration('InternalError');
|
|
54
53
|
const dispatch = useTypedDispatch();
|
|
55
54
|
const selectedTabs = useTypedSelector(selectResultTab);
|
|
56
|
-
const
|
|
57
|
-
const
|
|
55
|
+
const isExecutionResult = isExecutionQueryAction(resultType);
|
|
56
|
+
const hasResultSection = getResultSections(resultType).includes(RESULT_OPTIONS_IDS.result);
|
|
58
57
|
const [selectedResultSet, setSelectedResultSet] = React.useState(0);
|
|
59
58
|
const [useShowPlanToSvg] = useSetting(SETTING_KEYS.USE_SHOW_PLAN_SVG);
|
|
60
59
|
const [copyStatus, setCopyStatus] = React.useState('pending');
|
|
@@ -62,13 +61,13 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
|
|
|
62
61
|
const activeSection = React.useMemo(() => {
|
|
63
62
|
const savedTab = selectedTabs === null || selectedTabs === void 0 ? void 0 : selectedTabs[resultType];
|
|
64
63
|
if (savedTab) {
|
|
65
|
-
const validSections =
|
|
64
|
+
const validSections = getResultSections(resultType);
|
|
66
65
|
if (validSections.includes(savedTab)) {
|
|
67
66
|
return savedTab;
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
|
-
return
|
|
71
|
-
}, [selectedTabs, resultType
|
|
69
|
+
return getDefaultResultSection(resultType);
|
|
70
|
+
}, [selectedTabs, resultType]);
|
|
72
71
|
const { error, isLoading, streamingStatus, data = {} } = result;
|
|
73
72
|
const { preparedPlan, simplifiedPlan, stats, resultSets, ast } = data;
|
|
74
73
|
React.useEffect(() => {
|
|
@@ -83,18 +82,12 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
|
|
|
83
82
|
window.clearTimeout(copyTimeoutRef.current);
|
|
84
83
|
};
|
|
85
84
|
const radioButtonOptions = React.useMemo(() => {
|
|
86
|
-
|
|
87
|
-
if (isExecute) {
|
|
88
|
-
sections = EXECUTE_SECTIONS;
|
|
89
|
-
}
|
|
90
|
-
else if (isExplain) {
|
|
91
|
-
sections = EXPLAIN_SECTIONS;
|
|
92
|
-
}
|
|
85
|
+
const sections = getResultSections(resultType);
|
|
93
86
|
return sections.map((section) => ({
|
|
94
87
|
value: section,
|
|
95
88
|
content: RESULT_OPTIONS_TITLES[section],
|
|
96
89
|
}));
|
|
97
|
-
}, [
|
|
90
|
+
}, [resultType]);
|
|
98
91
|
const hasCopyableData = React.useCallback(() => {
|
|
99
92
|
var _a, _b, _c;
|
|
100
93
|
switch (activeSection) {
|
|
@@ -180,7 +173,7 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
|
|
|
180
173
|
ast: data.ast,
|
|
181
174
|
stats: data.stats,
|
|
182
175
|
plan: data.plan,
|
|
183
|
-
}, error: error, database: database, hasPlanToSvg: Boolean((data === null || data === void 0 ? void 0 : data.plan) && useShowPlanToSvg &&
|
|
176
|
+
}, error: error, database: database, hasPlanToSvg: Boolean((data === null || data === void 0 ? void 0 : data.plan) && useShowPlanToSvg && isExecutionResult) }));
|
|
184
177
|
};
|
|
185
178
|
const renderCommonErrorView = (isStopped) => {
|
|
186
179
|
return (_jsxs(Flex, { justifyContent: "center", alignItems: "center", width: "100%", gap: 8, children: [_jsx(InternalErrorImage, { width: 230, height: 230, className: b('illustration') }), _jsxs(Flex, { direction: "column", gap: 2, children: [_jsx(Text, { variant: "subheader-2", children: isStopped ? i18n('stopped.title') : i18n('error.title') }), _jsx(Text, { color: "complementary", children: isStopped ? i18n('stopped.description') : i18n('error.description') })] })] }));
|
|
@@ -191,18 +184,18 @@ export function QueryResultViewer({ result, resultType = 'execute', isResultsCol
|
|
|
191
184
|
if (error && isStopped && !(resultSets === null || resultSets === void 0 ? void 0 : resultSets.length)) {
|
|
192
185
|
return renderCommonErrorView(isStopped);
|
|
193
186
|
}
|
|
194
|
-
return (_jsx(ResultSetsViewer, { resultSets: resultSets, error: error, selectedResultSet: selectedResultSet, tableSettings: tableSettings, setSelectedResultSet: setSelectedResultSet }));
|
|
187
|
+
return (_jsx(ResultSetsViewer, { resultSets: resultSets, error: error, selectedResultSet: selectedResultSet, tableSettings: tableSettings, setSelectedResultSet: setSelectedResultSet, sourcePosition: result.sourcePosition }));
|
|
195
188
|
}
|
|
196
189
|
if (error) {
|
|
197
|
-
if (
|
|
190
|
+
if ((isExecutionResult && hasResultSection) || isStopped) {
|
|
198
191
|
return renderCommonErrorView(isStopped);
|
|
199
192
|
}
|
|
200
|
-
return _jsx(QueryResultError, { error: error });
|
|
193
|
+
return _jsx(QueryResultError, { error: error, sourcePosition: result.sourcePosition });
|
|
201
194
|
}
|
|
202
195
|
return (_jsx(PlanSection, { activeSection: activeSection, sectionTitle: RESULT_OPTIONS_TITLES[activeSection], preparedPlan: preparedPlan, simplifiedPlan: simplifiedPlan, stats: stats, ast: ast, theme: theme }));
|
|
203
196
|
};
|
|
204
197
|
const renderLeftControls = () => {
|
|
205
|
-
return (_jsxs("div", { className: b('controls-left'), children: [radioButtonOptions.length && activeSection ? (_jsx(SegmentedRadioGroup, { options: radioButtonOptions, value: activeSection, onUpdate: onSelectSection })) : null, _jsx(QueryExecutionStatus, { error: error, loading: isLoading, streamingStatus: streamingStatus }), (data === null || data === void 0 ? void 0 : data.traceId) &&
|
|
198
|
+
return (_jsxs("div", { className: b('controls-left'), children: [radioButtonOptions.length && activeSection ? (_jsx(SegmentedRadioGroup, { options: radioButtonOptions, value: activeSection, onUpdate: onSelectSection })) : null, _jsx(QueryExecutionStatus, { error: error, loading: isLoading, streamingStatus: streamingStatus }), (data === null || data === void 0 ? void 0 : data.traceId) && isExecutionResult ? _jsx(TraceButton, { traceId: data.traceId }) : null] }));
|
|
206
199
|
};
|
|
207
200
|
const renderRightControls = () => {
|
|
208
201
|
return (_jsxs("div", { className: b('controls-right'), children: [renderQueryInfoDropdown(), renderCopyButton(), _jsx(EnableFullscreenButton, {}), _jsx(PaneVisibilityToggleButtons, { onCollapse: onCollapseResults, onExpand: onExpandResults, isCollapsed: isResultsCollapsed, initialDirection: "bottom" })] }));
|