ydb-embedded-ui 11.3.0 → 11.5.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/dist/components/DoughnutMetrics/DoughnutMetrics.d.ts +3 -1
- package/dist/components/DoughnutMetrics/DoughnutMetrics.js +16 -20
- package/dist/components/DoughnutMetrics/DoughnutMetrics.js.map +1 -1
- package/dist/components/DoughnutMetrics/DoughnutMetrics.scss +25 -28
- package/dist/components/DoughnutMetrics/SvgCircle.d.ts +14 -0
- package/dist/components/DoughnutMetrics/SvgCircle.js +5 -0
- package/dist/components/DoughnutMetrics/SvgCircle.js.map +1 -0
- package/dist/components/DoughnutMetrics/utils.d.ts +36 -0
- package/dist/components/DoughnutMetrics/utils.js +40 -0
- package/dist/components/DoughnutMetrics/utils.js.map +1 -0
- package/dist/components/EntityStatus/EntityStatus.js +2 -1
- package/dist/components/EntityStatus/EntityStatus.js.map +1 -1
- package/dist/components/EntityStatus/EntityStatus.scss +0 -4
- package/dist/components/FixedHeightQuery/FixedHeightQuery.d.ts +3 -1
- package/dist/components/FixedHeightQuery/FixedHeightQuery.js +5 -3
- package/dist/components/FixedHeightQuery/FixedHeightQuery.js.map +1 -1
- package/dist/components/FixedHeightQuery/FixedHeightQuery.scss +5 -1
- package/dist/components/HoverPopup/HoverPopup.d.ts +0 -1
- package/dist/components/HoverPopup/HoverPopup.js +2 -4
- package/dist/components/HoverPopup/HoverPopup.js.map +1 -1
- package/dist/components/InfoViewer/InfoViewer.d.ts +2 -1
- package/dist/components/InfoViewer/InfoViewer.js +2 -2
- package/dist/components/InfoViewer/InfoViewer.js.map +1 -1
- package/dist/components/InfoViewer/InfoViewer.scss +20 -0
- package/dist/components/MemoryViewer/MemoryViewer.d.ts +1 -1
- package/dist/components/MemoryViewer/MemoryViewer.js +3 -3
- package/dist/components/MemoryViewer/MemoryViewer.js.map +1 -1
- package/dist/components/MemoryViewer/MemoryViewer.scss +5 -13
- package/dist/components/MemoryViewer/i18n/en.json +2 -1
- package/dist/components/MemoryViewer/i18n/index.d.ts +1 -1
- package/dist/components/MemoryViewer/utils.d.ts +3 -3
- package/dist/components/MemoryViewer/utils.js +12 -1
- package/dist/components/MemoryViewer/utils.js.map +1 -1
- package/dist/components/ProgressViewer/ProgressViewer.d.ts +1 -1
- package/dist/components/ProgressViewer/ProgressViewer.js +2 -9
- package/dist/components/ProgressViewer/ProgressViewer.js.map +1 -1
- package/dist/components/ProgressWrapper/ProgressContainer.d.ts +2 -0
- package/dist/components/ProgressWrapper/ProgressContainer.js +8 -0
- package/dist/components/ProgressWrapper/ProgressContainer.js.map +1 -0
- package/dist/components/ProgressWrapper/ProgressWrapper.d.ts +2 -0
- package/dist/components/ProgressWrapper/ProgressWrapper.js +10 -0
- package/dist/components/ProgressWrapper/ProgressWrapper.js.map +1 -0
- package/dist/components/ProgressWrapper/SingleProgress.d.ts +2 -0
- package/dist/components/ProgressWrapper/SingleProgress.js +24 -0
- package/dist/components/ProgressWrapper/SingleProgress.js.map +1 -0
- package/dist/components/ProgressWrapper/StackProgress.d.ts +2 -0
- package/dist/components/ProgressWrapper/StackProgress.js +39 -0
- package/dist/components/ProgressWrapper/StackProgress.js.map +1 -0
- package/dist/components/ProgressWrapper/i18n/en.json +4 -0
- package/dist/components/ProgressWrapper/i18n/index.d.ts +2 -0
- package/dist/components/ProgressWrapper/i18n/index.js +8 -0
- package/dist/components/ProgressWrapper/i18n/index.js.map +1 -0
- package/dist/components/ProgressWrapper/index.d.ts +6 -0
- package/dist/components/ProgressWrapper/index.js +9 -0
- package/dist/components/ProgressWrapper/index.js.map +1 -0
- package/dist/components/ProgressWrapper/progressUtils.d.ts +13 -0
- package/dist/components/ProgressWrapper/progressUtils.js +35 -0
- package/dist/components/ProgressWrapper/progressUtils.js.map +1 -0
- package/dist/components/ProgressWrapper/types.d.ts +29 -0
- package/dist/components/ProgressWrapper/types.js +2 -0
- package/dist/components/ProgressWrapper/types.js.map +1 -0
- package/dist/components/QueriesActivityBar/QueriesActivityAlert.d.ts +8 -0
- package/dist/components/QueriesActivityBar/QueriesActivityAlert.js +26 -0
- package/dist/components/QueriesActivityBar/QueriesActivityAlert.js.map +1 -0
- package/dist/components/QueriesActivityBar/QueriesActivityAlert.scss +25 -0
- package/dist/components/QueriesActivityBar/QueriesActivityBar.js +16 -96
- package/dist/components/QueriesActivityBar/QueriesActivityBar.js.map +1 -1
- package/dist/components/QueriesActivityBar/QueriesActivityBar.scss +2 -48
- package/dist/components/QueriesActivityBar/QueriesActivityCharts.js +5 -2
- package/dist/components/QueriesActivityBar/QueriesActivityCharts.js.map +1 -1
- package/dist/components/QueriesActivityBar/QueriesActivityExpandable.d.ts +21 -0
- package/dist/components/QueriesActivityBar/QueriesActivityExpandable.js +34 -0
- package/dist/components/QueriesActivityBar/QueriesActivityExpandable.js.map +1 -0
- package/dist/components/QueriesActivityBar/QueriesActivitySkeleton.d.ts +2 -0
- package/dist/components/QueriesActivityBar/QueriesActivitySkeleton.js +9 -0
- package/dist/components/QueriesActivityBar/QueriesActivitySkeleton.js.map +1 -0
- package/dist/components/QueriesActivityBar/QueriesActivitySkeleton.scss +6 -0
- package/dist/components/QueriesActivityBar/useQueriesActivityData.d.ts +11 -0
- package/dist/components/QueriesActivityBar/useQueriesActivityData.js +71 -0
- package/dist/components/QueriesActivityBar/useQueriesActivityData.js.map +1 -0
- package/dist/components/SeeAllButton/SeeAllButton.d.ts +7 -0
- package/dist/components/SeeAllButton/SeeAllButton.js +9 -0
- package/dist/components/SeeAllButton/SeeAllButton.js.map +1 -0
- package/dist/components/SeeAllButton/i18n/en.json +3 -0
- package/dist/components/SeeAllButton/i18n/index.d.ts +2 -0
- package/dist/components/SeeAllButton/i18n/index.js +5 -0
- package/dist/components/SeeAllButton/i18n/index.js.map +1 -0
- package/dist/components/ShardsTable/columns.js +1 -1
- package/dist/components/ShardsTable/columns.js.map +1 -1
- package/dist/components/SpeedMultiMeter/SpeedMultiMeter.js +2 -1
- package/dist/components/SpeedMultiMeter/SpeedMultiMeter.js.map +1 -1
- package/dist/components/SpeedMultiMeter/SpeedMultiMeter.scss +0 -3
- package/dist/components/SyntaxHighlighter/YDBSyntaxHighlighter.d.ts +2 -0
- package/dist/components/SyntaxHighlighter/YDBSyntaxHighlighter.js +4 -9
- package/dist/components/SyntaxHighlighter/YDBSyntaxHighlighter.js.map +1 -1
- package/dist/components/SyntaxHighlighter/themes.d.ts +6 -6
- package/dist/components/SyntaxHighlighter/themes.js +8 -0
- package/dist/components/SyntaxHighlighter/themes.js.map +1 -1
- package/dist/components/TitleWithHelpmark/TitleWithHelpmark.d.ts +6 -0
- package/dist/components/TitleWithHelpmark/TitleWithHelpmark.js +6 -0
- package/dist/components/TitleWithHelpmark/TitleWithHelpmark.js.map +1 -0
- package/dist/components/VersionsBar/VersionsBar.d.ts +7 -0
- package/dist/components/VersionsBar/VersionsBar.js +83 -0
- package/dist/components/VersionsBar/VersionsBar.js.map +1 -0
- package/dist/components/VersionsBar/VersionsBar.scss +36 -0
- package/dist/components/VersionsBar/i18n/en.json +8 -0
- package/dist/components/VersionsBar/i18n/index.d.ts +2 -0
- package/dist/components/VersionsBar/i18n/index.js +5 -0
- package/dist/components/VersionsBar/i18n/index.js.map +1 -0
- package/dist/components/nodesColumns/columns.js +3 -3
- package/dist/components/nodesColumns/columns.js.map +1 -1
- package/dist/containers/App/App.scss +4 -0
- package/dist/containers/AsideNavigation/AsideNavigation.scss +1 -1
- package/dist/containers/AsideNavigation/hooks/useHotkeysPanel.js +0 -8
- package/dist/containers/AsideNavigation/hooks/useHotkeysPanel.js.map +1 -1
- package/dist/containers/AsideNavigation/i18n/en.json +0 -2
- package/dist/containers/AsideNavigation/i18n/index.d.ts +1 -1
- package/dist/containers/Cluster/VersionsBar/VersionsBar.d.ts +1 -1
- package/dist/containers/Cluster/VersionsBar/VersionsBar.js.map +1 -1
- package/dist/containers/Clusters/Clusters.scss +0 -4
- package/dist/containers/Clusters/columns.js +3 -11
- package/dist/containers/Clusters/columns.js.map +1 -1
- package/dist/containers/Clusters/i18n/en.json +4 -1
- package/dist/containers/Node/Node.js +4 -0
- package/dist/containers/Node/Node.js.map +1 -1
- package/dist/containers/Node/NodePages.d.ts +5 -0
- package/dist/containers/Node/NodePages.js +7 -0
- package/dist/containers/Node/NodePages.js.map +1 -1
- package/dist/containers/Node/Threads/CpuUsageBar/CpuUsageBar.d.ts +8 -0
- package/dist/containers/Node/Threads/CpuUsageBar/CpuUsageBar.js +14 -0
- package/dist/containers/Node/Threads/CpuUsageBar/CpuUsageBar.js.map +1 -0
- package/dist/containers/Node/Threads/CpuUsageBar/CpuUsageBar.scss +6 -0
- package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.d.ts +8 -0
- package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.js +72 -0
- package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.js.map +1 -0
- package/dist/containers/Node/Threads/ThreadStatesBar/ThreadStatesBar.scss +10 -0
- package/dist/containers/Node/Threads/Threads.d.ts +6 -0
- package/dist/containers/Node/Threads/Threads.js +17 -0
- package/dist/containers/Node/Threads/Threads.js.map +1 -0
- package/dist/containers/Node/Threads/columns.d.ts +3 -0
- package/dist/containers/Node/Threads/columns.js +52 -0
- package/dist/containers/Node/Threads/columns.js.map +1 -0
- package/dist/containers/Node/Threads/i18n/en.json +11 -0
- package/dist/containers/Node/Threads/i18n/index.d.ts +2 -0
- package/dist/containers/Node/Threads/i18n/index.js +5 -0
- package/dist/containers/Node/Threads/i18n/index.js.map +1 -0
- package/dist/containers/Node/i18n/en.json +1 -0
- package/dist/containers/Node/i18n/index.d.ts +1 -1
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js +3 -3
- package/dist/containers/Storage/PaginatedStorageGroupsTable/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/AccessRights/AccessRights.scss +0 -6
- package/dist/containers/Tenant/Diagnostics/AccessRights/components/RightsTable/columns.js +4 -6
- package/dist/containers/Tenant/Diagnostics/AccessRights/components/RightsTable/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js +2 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/Healthcheck/HealthcheckPreview.scss +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/{MetricsCards/MetricsCards.d.ts → MetricsTabs/MetricsTabs.d.ts} +4 -3
- package/dist/containers/Tenant/Diagnostics/TenantOverview/{MetricsCards/MetricsCards.js → MetricsTabs/MetricsTabs.js} +16 -9
- package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsTabs/MetricsTabs.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/{MetricsCards/MetricsCards.scss → MetricsTabs/MetricsTabs.scss} +5 -5
- package/dist/containers/Tenant/Diagnostics/TenantOverview/StatsWrapper/StatsWrapper.d.ts +11 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/StatsWrapper/StatsWrapper.js +10 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/StatsWrapper/StatsWrapper.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/StatsWrapper/StatsWrapper.scss +14 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.d.ts +2 -4
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.js +2 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TabCard/TabCard.scss +2 -4
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js +13 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TenantCpu.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js +2 -14
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByCpu.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js +2 -14
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopNodesByLoad.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js +13 -46
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopQueries.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js +1 -17
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantCpu/TopShards.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js +9 -2
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantDashboard/TenantDashboard.scss +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemoryDetailsSection.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemoryDetailsSection.js +34 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemoryDetailsSection.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemoryDetailsSection.scss +44 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemorySegmentsList.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemorySegmentsList.js +28 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/MemorySegmentsList.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.d.ts +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js +28 -5
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TenantMemory.scss +20 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js +2 -14
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantMemory/TopNodesByMemory.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TenantNetwork.d.ts +8 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TenantNetwork.js +26 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TenantNetwork.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TenantNetwork.scss +9 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TopNodesByPing.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TopNodesByPing.js +28 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TopNodesByPing.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TopNodesBySkew.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TopNodesBySkew.js +28 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/TopNodesBySkew.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/columns.d.ts +76 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/columns.js +38 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantNetwork/columns.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js +9 -3
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverview.scss +6 -7
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.js +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantOverviewTableLayout.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.d.ts +0 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js +13 -7
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TenantStorage.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js +2 -15
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopGroups.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.d.ts +0 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js +14 -19
- package/dist/containers/Tenant/Diagnostics/TenantOverview/TenantStorage/TopTables.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/en.json +19 -21
- package/dist/containers/Tenant/Diagnostics/TenantOverview/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.d.ts +22 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.js +29 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueriesTableWithDrawer.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +2 -24
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +2 -13
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.js +10 -13
- package/dist/containers/Tenant/Diagnostics/TopQueries/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor.js +0 -2
- package/dist/containers/Tenant/Query/QueryEditor/YqlEditor.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryEditor/keybindings.d.ts +0 -2
- package/dist/containers/Tenant/Query/QueryEditor/keybindings.js +0 -2
- package/dist/containers/Tenant/Query/QueryEditor/keybindings.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +25 -19
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
- package/dist/containers/Versions/GroupedNodesTree/GroupedNodesTree.d.ts +1 -1
- package/dist/containers/Versions/GroupedNodesTree/GroupedNodesTree.js.map +1 -1
- package/dist/containers/Versions/NodesTreeTitle/NodesTreeTitle.d.ts +1 -1
- package/dist/containers/Versions/NodesTreeTitle/NodesTreeTitle.js.map +1 -1
- package/dist/containers/Versions/Versions.js +8 -8
- package/dist/containers/Versions/Versions.js.map +1 -1
- package/dist/containers/Versions/groupNodes.d.ts +4 -4
- package/dist/containers/Versions/groupNodes.js +9 -9
- package/dist/containers/Versions/groupNodes.js.map +1 -1
- package/dist/containers/Versions/groupNodes.test.js +22 -20
- package/dist/containers/Versions/groupNodes.test.js.map +1 -1
- package/dist/containers/Versions/types.d.ts +1 -1
- package/dist/containers/Versions/utils.d.ts +4 -4
- package/dist/containers/Versions/utils.js +15 -15
- package/dist/containers/Versions/utils.js.map +1 -1
- package/dist/services/api/index.d.ts +6 -3
- package/dist/services/api/index.js +19 -2
- package/dist/services/api/index.js.map +1 -1
- package/dist/services/api/viewer.js +1 -0
- package/dist/services/api/viewer.js.map +1 -1
- package/dist/store/reducers/capabilities/capabilities.d.ts +125 -0
- package/dist/store/reducers/capabilities/capabilities.js +1 -0
- package/dist/store/reducers/capabilities/capabilities.js.map +1 -1
- package/dist/store/reducers/capabilities/hooks.d.ts +1 -0
- package/dist/store/reducers/capabilities/hooks.js +5 -1
- package/dist/store/reducers/capabilities/hooks.js.map +1 -1
- package/dist/store/reducers/clusters/types.d.ts +2 -2
- package/dist/store/reducers/clusters/utils.js +3 -3
- package/dist/store/reducers/clusters/utils.js.map +1 -1
- package/dist/store/reducers/query/__test__/tabPersistence.test.d.ts +1 -0
- package/dist/store/reducers/query/__test__/tabPersistence.test.js +62 -0
- package/dist/store/reducers/query/__test__/tabPersistence.test.js.map +1 -0
- package/dist/store/reducers/query/query.d.ts +14 -1
- package/dist/store/reducers/query/query.js +10 -2
- package/dist/store/reducers/query/query.js.map +1 -1
- package/dist/store/reducers/query/types.d.ts +4 -0
- package/dist/store/reducers/tenant/constants.d.ts +1 -0
- package/dist/store/reducers/tenant/constants.js +1 -0
- package/dist/store/reducers/tenant/constants.js.map +1 -1
- package/dist/store/reducers/tenant/tenant.js +2 -1
- package/dist/store/reducers/tenant/tenant.js.map +1 -1
- package/dist/store/reducers/tenant/types.d.ts +1 -1
- package/dist/styles/mixins.scss +6 -0
- package/dist/styles/versions.scss +110 -86
- package/dist/types/api/capabilities.d.ts +3 -0
- package/dist/types/api/nodes.d.ts +3 -0
- package/dist/types/api/nodes.js.map +1 -1
- package/dist/types/api/systemState.d.ts +3 -0
- package/dist/types/api/threads.d.ts +60 -0
- package/dist/types/api/threads.js +32 -0
- package/dist/types/api/threads.js.map +1 -0
- package/dist/utils/constants.d.ts +2 -1
- package/dist/utils/constants.js +2 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/hooks/index.d.ts +1 -0
- package/dist/utils/hooks/index.js +1 -0
- package/dist/utils/hooks/index.js.map +1 -1
- package/dist/utils/hooks/useScrollPosition.d.ts +7 -0
- package/dist/utils/hooks/useScrollPosition.js +100 -0
- package/dist/utils/hooks/useScrollPosition.js.map +1 -0
- package/dist/utils/metrics/formatMetricLegend.d.ts +1 -0
- package/dist/utils/metrics/formatMetricLegend.js +21 -0
- package/dist/utils/metrics/formatMetricLegend.js.map +1 -1
- package/dist/utils/metrics.d.ts +1 -1
- package/dist/utils/metrics.js +1 -1
- package/dist/utils/prepareErrorMessage.js +9 -2
- package/dist/utils/prepareErrorMessage.js.map +1 -1
- package/dist/utils/progress.d.ts +2 -0
- package/dist/utils/progress.js +7 -0
- package/dist/utils/progress.js.map +1 -1
- package/dist/utils/versions/__test__/sortVersions.test.d.ts +1 -0
- package/dist/utils/versions/__test__/sortVersions.test.js +106 -0
- package/dist/utils/versions/__test__/sortVersions.test.js.map +1 -0
- package/dist/utils/versions/clusterVersionColors.d.ts +5 -0
- package/dist/utils/versions/clusterVersionColors.js +71 -0
- package/dist/utils/versions/clusterVersionColors.js.map +1 -0
- package/dist/utils/versions/getVersionsColors.d.ts +5 -4
- package/dist/utils/versions/getVersionsColors.js +63 -36
- package/dist/utils/versions/getVersionsColors.js.map +1 -1
- package/dist/utils/versions/parseNodesToVersionsValues.d.ts +3 -3
- package/dist/utils/versions/parseNodesToVersionsValues.js +5 -5
- package/dist/utils/versions/parseNodesToVersionsValues.js.map +1 -1
- package/dist/utils/versions/sortVersions.d.ts +18 -0
- package/dist/utils/versions/sortVersions.js +41 -0
- package/dist/utils/versions/sortVersions.js.map +1 -0
- package/dist/utils/versions/types.d.ts +22 -0
- package/dist/utils/versions/types.js +2 -0
- package/dist/utils/versions/types.js.map +1 -0
- package/package.json +2 -2
- package/dist/components/HoverPopup/HoverPopup.scss +0 -3
- package/dist/containers/Tenant/Diagnostics/TenantOverview/MetricsCards/MetricsCards.js.map +0 -1
- package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.d.ts +0 -9
- package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.js +0 -12
- package/dist/containers/Tenant/Diagnostics/TenantOverview/getSectionTitle.js.map +0 -1
- package/dist/types/versions.d.ts +0 -8
- package/dist/types/versions.js +0 -2
- package/dist/types/versions.js.map +0 -1
- package/dist/utils/clusterVersionColors.d.ts +0 -11
- package/dist/utils/clusterVersionColors.js +0 -53
- package/dist/utils/clusterVersionColors.js.map +0 -1
@@ -1,2 +1,2 @@
|
|
1
|
-
declare const _default: (key: "text_external-consumption" | "text_allocator-caches" | "text_shared-cache" | "text_memtable" | "text_query-execution" | "text_usage" | "text_soft-limit" | "text_hard-limit" | "text_other", params?: import("@gravity-ui/i18n").Params) => string;
|
1
|
+
declare const _default: (key: "text_external-consumption" | "text_allocator-caches" | "text_shared-cache" | "text_memtable" | "text_query-execution" | "text_usage" | "text_soft-limit" | "text_hard-limit" | "text_other" | "text_memory-details", params?: import("@gravity-ui/i18n").Params) => string;
|
2
2
|
export default _default;
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import type { TMemoryStats } from '../../types/api/nodes';
|
2
2
|
export declare function calculateAllocatedMemory(stats: TMemoryStats): string;
|
3
|
-
export
|
4
|
-
interface MemorySegment {
|
3
|
+
export interface MemorySegment {
|
5
4
|
label: string;
|
6
5
|
key: string;
|
7
6
|
value: number;
|
8
7
|
capacity?: number;
|
9
8
|
isInfo?: boolean;
|
10
9
|
}
|
10
|
+
export declare const MEMORY_SEGMENT_COLORS: Record<string, string>;
|
11
|
+
export declare function getMemorySegmentColor(key: string): string;
|
11
12
|
export declare function getMemorySegments(stats: TMemoryStats, memoryUsage: number): MemorySegment[];
|
12
|
-
export {};
|
@@ -5,9 +5,20 @@ export function calculateAllocatedMemory(stats) {
|
|
5
5
|
const allocatorCaches = getMaybeNumber(stats.AllocatorCachesMemory) || 0;
|
6
6
|
return String(allocatedMemory + allocatorCaches);
|
7
7
|
}
|
8
|
-
|
8
|
+
function getMaybeNumber(value) {
|
9
9
|
return isNumeric(value) ? parseFloat(String(value)) : undefined;
|
10
10
|
}
|
11
|
+
// Memory segment colors using CSS variables for theme support
|
12
|
+
export const MEMORY_SEGMENT_COLORS = {
|
13
|
+
AllocatorCachesMemory: 'var(--g-color-base-danger-medium)',
|
14
|
+
SharedCacheConsumption: 'var(--g-color-base-info-medium)',
|
15
|
+
MemTableConsumption: 'var(--g-color-base-warning-medium)',
|
16
|
+
QueryExecutionConsumption: 'var(--g-color-base-positive-medium)',
|
17
|
+
Other: 'var(--g-color-base-neutral-medium)',
|
18
|
+
};
|
19
|
+
export function getMemorySegmentColor(key) {
|
20
|
+
return MEMORY_SEGMENT_COLORS[key] || MEMORY_SEGMENT_COLORS['Other'];
|
21
|
+
}
|
11
22
|
export function getMemorySegments(stats, memoryUsage) {
|
12
23
|
const segments = [
|
13
24
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/MemoryViewer/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,UAAU,wBAAwB,CAAC,KAAmB;IACxD,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,eAAe,GAAG,eAAe,CAAC,CAAC;AACrD,CAAC;AAED,
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/components/MemoryViewer/utils.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import type { FormatProgressViewerValues } from '../../utils/progress';
|
1
2
|
import './ProgressViewer.scss';
|
2
3
|
type ProgressViewerSize = 'xs' | 's' | 'ns' | 'm' | 'n' | 'l' | 'head';
|
3
|
-
export type FormatProgressViewerValues = (value?: number, capacity?: number) => (string | number | undefined)[];
|
4
4
|
export interface ProgressViewerProps {
|
5
5
|
value?: number | string;
|
6
6
|
capacity?: number | string;
|
@@ -1,18 +1,11 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { useTheme } from '@gravity-ui/uikit';
|
3
3
|
import { cn } from '../../utils/cn';
|
4
|
-
import {
|
5
|
-
import { calculateProgressStatus } from '../../utils/progress';
|
4
|
+
import { calculateProgressStatus, defaultFormatProgressValues } from '../../utils/progress';
|
6
5
|
import { isNumeric } from '../../utils/utils';
|
7
6
|
import './ProgressViewer.scss';
|
8
7
|
const b = cn('progress-viewer');
|
9
|
-
|
10
|
-
return formatNumber(roundToPrecision(Number(value), 2));
|
11
|
-
};
|
12
|
-
const defaultFormatValues = (value, total) => {
|
13
|
-
return [formatValue(value), formatValue(total)];
|
14
|
-
};
|
15
|
-
export function ProgressViewer({ value, capacity, formatValues = defaultFormatValues, percents, withOverflow, className, size = 'xs', colorizeProgress, inverseColorize, warningThreshold, dangerThreshold, hideCapacity, }) {
|
8
|
+
export function ProgressViewer({ value, capacity, formatValues = defaultFormatProgressValues, percents, withOverflow, className, size = 'xs', colorizeProgress, inverseColorize, warningThreshold, dangerThreshold, hideCapacity, }) {
|
16
9
|
const theme = useTheme();
|
17
10
|
let fillWidth = Math.floor((parseFloat(String(value)) / parseFloat(String(capacity))) * 100) || 0;
|
18
11
|
const rawFillWidth = fillWidth;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ProgressViewer.js","sourceRoot":"","sources":["../../../src/components/ProgressViewer/ProgressViewer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,
|
1
|
+
{"version":3,"file":"ProgressViewer.js","sourceRoot":"","sources":["../../../src/components/ProgressViewer/ProgressViewer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,EAAE,EAAC,MAAM,gBAAgB,CAAC;AAClC,OAAO,EAAC,uBAAuB,EAAE,2BAA2B,EAAC,MAAM,sBAAsB,CAAC;AAE1F,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,uBAAuB,CAAC;AAE/B,MAAM,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC;AAiChC,MAAM,UAAU,cAAc,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,YAAY,GAAG,2BAA2B,EAC1C,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,IAAI,GAAG,IAAI,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,YAAY,GACM;IAClB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,IAAI,SAAS,GACT,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,SAAS,CAAC;IAC/B,SAAS,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9C,IAAI,SAAS,GAAgC,KAAK,EAC9C,YAAY,GAAgC,QAAQ,EACpD,OAAO,GAAG,GAAG,CAAC;IAClB,IAAI,QAAQ,EAAE,CAAC;QACX,SAAS,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;QAC5D,YAAY,GAAG,EAAE,CAAC;QAClB,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;SAAM,IAAI,YAAY,EAAE,CAAC;QACtB,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACnC,SAAS;QACT,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,eAAe;KAClB,CAAC,CAAC;IACH,IAAI,gBAAgB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,SAAS,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,MAAM,SAAS,GAAG;QACd,KAAK,EAAE,SAAS,GAAG,GAAG;KACzB,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACvB,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,OAAO,GAAG,SAAS,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IAEF,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CACH,eAAK,SAAS,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAC,EAAE,SAAS,CAAC,aAC/C,cAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,GAAQ,EACnD,eAAM,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,YAAG,aAAa,EAAE,GAAQ,IAClD,CACT,CAAC;IACN,CAAC;IAED,OAAO,cAAK,SAAS,EAAE,GAAG,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,IAAI,SAAS,QAAQ,wBAAe,CAAC;AAC5E,CAAC"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { Flex, Text } from '@gravity-ui/uikit';
|
3
|
+
import { getProgressStyle } from './progressUtils';
|
4
|
+
export function ProgressContainer({ children, displayText, withCapacityUsage = false, className, width, }) {
|
5
|
+
const progressStyle = getProgressStyle(width);
|
6
|
+
return (_jsxs(Flex, { alignItems: "center", gap: "2", className: className, children: [_jsx("div", { style: progressStyle, children: children }), withCapacityUsage && displayText && (_jsx(Text, { variant: "body-1", color: "secondary", children: displayText }))] }));
|
7
|
+
}
|
8
|
+
//# sourceMappingURL=ProgressContainer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ProgressContainer.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/ProgressContainer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAGjD,MAAM,UAAU,iBAAiB,CAAC,EAC9B,QAAQ,EACR,WAAW,EACX,iBAAiB,GAAG,KAAK,EACzB,SAAS,EACT,KAAK,GACgB;IACrB,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,CACH,MAAC,IAAI,IAAC,UAAU,EAAC,QAAQ,EAAC,GAAG,EAAC,GAAG,EAAC,SAAS,EAAE,SAAS,aAClD,cAAK,KAAK,EAAE,aAAa,YAAG,QAAQ,GAAO,EAC1C,iBAAiB,IAAI,WAAW,IAAI,CACjC,KAAC,IAAI,IAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,EAAC,WAAW,YACnC,WAAW,GACT,CACV,IACE,CACV,CAAC;AACN,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { SingleProgress } from './SingleProgress';
|
3
|
+
import { StackProgress } from './StackProgress';
|
4
|
+
export function ProgressWrapper(props) {
|
5
|
+
if ('stack' in props && props.stack) {
|
6
|
+
return _jsx(StackProgress, { ...props });
|
7
|
+
}
|
8
|
+
return _jsx(SingleProgress, { ...props });
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=ProgressWrapper.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ProgressWrapper.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/ProgressWrapper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAG9C,MAAM,UAAU,eAAe,CAAC,KAA2B;IACvD,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,KAAC,aAAa,OAAK,KAAK,GAAI,CAAC;IACxC,CAAC;IACD,OAAO,KAAC,cAAc,OAAK,KAAK,GAAI,CAAC;AACzC,CAAC"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { Progress } from '@gravity-ui/uikit';
|
4
|
+
import { defaultFormatProgressValues } from '../../utils/progress';
|
5
|
+
import { safeParseNumber } from '../../utils/utils';
|
6
|
+
import { ProgressContainer } from './ProgressContainer';
|
7
|
+
import i18n from './i18n';
|
8
|
+
import { PROGRESS_SIZE, calculateProgressWidth, formatDisplayValues, formatProgressText, isValidValue, } from './progressUtils';
|
9
|
+
export function SingleProgress({ value, capacity, formatValues = defaultFormatProgressValues, className, width, size = PROGRESS_SIZE, withCapacityUsage = false, }) {
|
10
|
+
if (!isValidValue(value)) {
|
11
|
+
return _jsx("div", { className: className, children: i18n('alert_no-data') });
|
12
|
+
}
|
13
|
+
const numericValue = safeParseNumber(value);
|
14
|
+
const numericCapacity = safeParseNumber(capacity);
|
15
|
+
const clampedFillWidth = calculateProgressWidth(numericValue, numericCapacity);
|
16
|
+
const [valueText, capacityText] = React.useMemo(() => {
|
17
|
+
return formatDisplayValues(value, capacity, formatValues);
|
18
|
+
}, [formatValues, value, capacity]);
|
19
|
+
const displayText = React.useMemo(() => {
|
20
|
+
return formatProgressText(valueText, capacityText, numericCapacity);
|
21
|
+
}, [valueText, capacityText, numericCapacity]);
|
22
|
+
return (_jsx(ProgressContainer, { displayText: displayText, withCapacityUsage: withCapacityUsage, className: className, width: width, children: _jsx(Progress, { value: clampedFillWidth, theme: "success", size: size }) }));
|
23
|
+
}
|
24
|
+
//# sourceMappingURL=SingleProgress.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"SingleProgress.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/SingleProgress.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAC,2BAA2B,EAAC,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EACH,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GACf,MAAM,iBAAiB,CAAC;AAGzB,MAAM,UAAU,cAAc,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,YAAY,GAAG,2BAA2B,EAC1C,SAAS,EACT,KAAK,EACL,IAAI,GAAG,aAAa,EACpB,iBAAiB,GAAG,KAAK,GACA;IACzB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,cAAK,SAAS,EAAE,SAAS,YAAG,IAAI,CAAC,eAAe,CAAC,GAAO,CAAC;IACpE,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAE/E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjD,OAAO,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACnC,OAAO,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAE/C,OAAO,CACH,KAAC,iBAAiB,IACd,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,YAEZ,KAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAC,SAAS,EAAC,IAAI,EAAE,IAAI,GAAI,GACjD,CACvB,CAAC;AACN,CAAC"}
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { Progress } from '@gravity-ui/uikit';
|
4
|
+
import { defaultFormatProgressValues } from '../../utils/progress';
|
5
|
+
import { safeParseNumber } from '../../utils/utils';
|
6
|
+
import { getMemorySegmentColor } from '../MemoryViewer/utils';
|
7
|
+
import { ProgressContainer } from './ProgressContainer';
|
8
|
+
import i18n from './i18n';
|
9
|
+
import { MAX_PERCENTAGE, PROGRESS_SIZE, formatDisplayValues, formatProgressText, } from './progressUtils';
|
10
|
+
export function StackProgress({ stack, totalCapacity, formatValues = defaultFormatProgressValues, className, width, size = PROGRESS_SIZE, withCapacityUsage = false, }) {
|
11
|
+
const displaySegments = React.useMemo(() => {
|
12
|
+
return stack.filter((segment) => !segment.isInfo && segment.value > 0);
|
13
|
+
}, [stack]);
|
14
|
+
if (displaySegments.length === 0) {
|
15
|
+
return _jsx("div", { className: className, children: i18n('alert_no-data') });
|
16
|
+
}
|
17
|
+
const totalValue = React.useMemo(() => {
|
18
|
+
return displaySegments.reduce((sum, segment) => sum + segment.value, 0);
|
19
|
+
}, [displaySegments]);
|
20
|
+
const numericTotalCapacity = React.useMemo(() => {
|
21
|
+
return safeParseNumber(totalCapacity);
|
22
|
+
}, [totalCapacity]);
|
23
|
+
const maxValue = numericTotalCapacity || totalValue;
|
24
|
+
const stackElements = React.useMemo(() => {
|
25
|
+
return displaySegments.map((segment) => ({
|
26
|
+
value: maxValue > 0 ? (segment.value / maxValue) * MAX_PERCENTAGE : 0,
|
27
|
+
color: getMemorySegmentColor(segment.key),
|
28
|
+
title: segment.label,
|
29
|
+
}));
|
30
|
+
}, [displaySegments, maxValue]);
|
31
|
+
const [totalValueText, totalCapacityText] = React.useMemo(() => {
|
32
|
+
return formatDisplayValues(totalValue, numericTotalCapacity || totalValue, formatValues);
|
33
|
+
}, [formatValues, totalValue, numericTotalCapacity]);
|
34
|
+
const displayText = React.useMemo(() => {
|
35
|
+
return formatProgressText(totalValueText, totalCapacityText, numericTotalCapacity || 0);
|
36
|
+
}, [totalValueText, totalCapacityText, numericTotalCapacity]);
|
37
|
+
return (_jsx(ProgressContainer, { displayText: displayText, withCapacityUsage: withCapacityUsage, className: className, width: width, children: _jsx(Progress, { value: MAX_PERCENTAGE, stack: stackElements, size: size }) }));
|
38
|
+
}
|
39
|
+
//# sourceMappingURL=StackProgress.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"StackProgress.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/StackProgress.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ProgressWrapper/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3B,MAAM,SAAS,GAAG,kBAAkB,CAAC;AAErC,MAAM,OAAO,GAAG;IACZ,EAAE;CACL,CAAC;AAEF,eAAe,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export { ProgressWrapper } from './ProgressWrapper';
|
2
|
+
export { SingleProgress } from './SingleProgress';
|
3
|
+
export { StackProgress } from './StackProgress';
|
4
|
+
export { ProgressContainer } from './ProgressContainer';
|
5
|
+
export type { ProgressWrapperProps, ProgressWrapperSingleProps, ProgressWrapperStackProps, ProgressContainerProps, } from './types';
|
6
|
+
export * from './progressUtils';
|
@@ -0,0 +1,9 @@
|
|
1
|
+
// Main component - public API
|
2
|
+
export { ProgressWrapper } from './ProgressWrapper';
|
3
|
+
// Individual components - for direct usage if needed
|
4
|
+
export { SingleProgress } from './SingleProgress';
|
5
|
+
export { StackProgress } from './StackProgress';
|
6
|
+
export { ProgressContainer } from './ProgressContainer';
|
7
|
+
// Utils - for advanced usage
|
8
|
+
export * from './progressUtils';
|
9
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElD,qDAAqD;AACrD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAUtD,6BAA6B;AAC7B,cAAc,iBAAiB,CAAC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import type { FormatProgressViewerValues } from '../../utils/progress';
|
2
|
+
export declare const DEFAULT_PROGRESS_WIDTH = 400;
|
3
|
+
export declare const MAX_PERCENTAGE = 100;
|
4
|
+
export declare const MIN_PERCENTAGE = 0;
|
5
|
+
export declare const PROGRESS_SIZE = "s";
|
6
|
+
export declare const isValidValue: (val?: number | string) => boolean;
|
7
|
+
export declare function calculateProgressWidth(value: number, capacity: number): number;
|
8
|
+
export declare function getProgressStyle(width?: number | 'full'): {
|
9
|
+
width: string;
|
10
|
+
flex: string;
|
11
|
+
};
|
12
|
+
export declare function formatProgressText(valueText: string | number | undefined, capacityText: string | number | undefined, numericCapacity: number): string;
|
13
|
+
export declare function formatDisplayValues(value: number | string | undefined, capacity: number | string | undefined, formatValues?: FormatProgressViewerValues): [string | number | undefined, string | number | undefined];
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { isNumeric, safeParseNumber } from '../../utils/utils';
|
2
|
+
import i18n from './i18n';
|
3
|
+
// Constants that were previously in TenantStorage/constants
|
4
|
+
export const DEFAULT_PROGRESS_WIDTH = 400;
|
5
|
+
export const MAX_PERCENTAGE = 100;
|
6
|
+
export const MIN_PERCENTAGE = 0;
|
7
|
+
export const PROGRESS_SIZE = 's';
|
8
|
+
export const isValidValue = (val) => isNumeric(val) && safeParseNumber(val) >= 0;
|
9
|
+
export function calculateProgressWidth(value, capacity) {
|
10
|
+
const rawPercentage = capacity > 0 ? Math.floor((value / capacity) * MAX_PERCENTAGE) : MAX_PERCENTAGE;
|
11
|
+
const fillWidth = Math.max(MIN_PERCENTAGE, rawPercentage);
|
12
|
+
return Math.min(fillWidth, MAX_PERCENTAGE);
|
13
|
+
}
|
14
|
+
export function getProgressStyle(width) {
|
15
|
+
const isFullWidth = width === 'full';
|
16
|
+
const validatedWidth = isFullWidth ? 0 : Math.max(0, width || DEFAULT_PROGRESS_WIDTH);
|
17
|
+
return {
|
18
|
+
width: isFullWidth ? '100%' : `${validatedWidth}px`,
|
19
|
+
flex: isFullWidth ? '1' : 'none',
|
20
|
+
};
|
21
|
+
}
|
22
|
+
export function formatProgressText(valueText, capacityText, numericCapacity) {
|
23
|
+
if (numericCapacity <= 0) {
|
24
|
+
return String(valueText);
|
25
|
+
}
|
26
|
+
return i18n('context_capacity-usage', { value: valueText, capacity: capacityText });
|
27
|
+
}
|
28
|
+
export function formatDisplayValues(value, capacity, formatValues) {
|
29
|
+
if (formatValues) {
|
30
|
+
const result = formatValues(Number(value), Number(capacity));
|
31
|
+
return [result[0], result[1]];
|
32
|
+
}
|
33
|
+
return [value, capacity];
|
34
|
+
}
|
35
|
+
//# sourceMappingURL=progressUtils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"progressUtils.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/progressUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAE7D,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,4DAA4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAqB,EAAW,EAAE,CAC3D,SAAS,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEhD,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,QAAgB;IAClE,MAAM,aAAa,GACf,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAuB;IACpD,MAAM,WAAW,GAAG,KAAK,KAAK,MAAM,CAAC;IACrC,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,sBAAsB,CAAC,CAAC;IAEtF,OAAO;QACH,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI;QACnD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;KACnC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB,CAC9B,SAAsC,EACtC,YAAyC,EACzC,eAAuB;IAEvB,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,wBAAwB,EAAE,EAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,KAAkC,EAClC,QAAqC,EACrC,YAAyC;IAEzC,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAA+D,CAAC;IAChG,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import type { ProgressSize } from '@gravity-ui/uikit';
|
2
|
+
import type { FormatProgressViewerValues } from '../../utils/progress';
|
3
|
+
import type { MemorySegment } from '../MemoryViewer/utils';
|
4
|
+
export interface ProgressWrapperBaseProps {
|
5
|
+
formatValues?: FormatProgressViewerValues;
|
6
|
+
className?: string;
|
7
|
+
width?: number | 'full';
|
8
|
+
size?: ProgressSize;
|
9
|
+
withCapacityUsage?: boolean;
|
10
|
+
}
|
11
|
+
export interface ProgressWrapperSingleProps extends ProgressWrapperBaseProps {
|
12
|
+
value?: number | string;
|
13
|
+
capacity?: number | string;
|
14
|
+
stack?: never;
|
15
|
+
}
|
16
|
+
export interface ProgressWrapperStackProps extends ProgressWrapperBaseProps {
|
17
|
+
stack: MemorySegment[];
|
18
|
+
totalCapacity?: number | string;
|
19
|
+
value?: never;
|
20
|
+
capacity?: never;
|
21
|
+
}
|
22
|
+
export type ProgressWrapperProps = ProgressWrapperSingleProps | ProgressWrapperStackProps;
|
23
|
+
export interface ProgressContainerProps {
|
24
|
+
children: React.ReactNode;
|
25
|
+
displayText?: string;
|
26
|
+
withCapacityUsage?: boolean;
|
27
|
+
className?: string;
|
28
|
+
width?: number | 'full';
|
29
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/ProgressWrapper/types.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import './QueriesActivityAlert.scss';
|
2
|
+
interface QueriesActivityAlertProps {
|
3
|
+
runningQueriesCount: number;
|
4
|
+
uniqueApplications: number;
|
5
|
+
uniqueUsers: number;
|
6
|
+
}
|
7
|
+
export declare function QueriesActivityAlert({ runningQueriesCount, uniqueApplications, uniqueUsers, }: QueriesActivityAlertProps): import("react/jsx-runtime").JSX.Element;
|
8
|
+
export {};
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { CirclePlay, Display, Person } from '@gravity-ui/icons';
|
3
|
+
import { Button, Card, Flex, Icon, Label, Text } from '@gravity-ui/uikit';
|
4
|
+
import { useHistory, useLocation } from 'react-router-dom';
|
5
|
+
import { TenantTabsGroups, getTenantPath } from '../../containers/Tenant/TenantPages';
|
6
|
+
import { parseQuery } from '../../routes';
|
7
|
+
import { TENANT_DIAGNOSTICS_TABS_IDS } from '../../store/reducers/tenant/constants';
|
8
|
+
import { cn } from '../../utils/cn';
|
9
|
+
import i18n from './i18n';
|
10
|
+
import './QueriesActivityAlert.scss';
|
11
|
+
const b = cn('queries-activity-alert');
|
12
|
+
export function QueriesActivityAlert({ runningQueriesCount, uniqueApplications, uniqueUsers, }) {
|
13
|
+
const history = useHistory();
|
14
|
+
const location = useLocation();
|
15
|
+
const handleOpenRunningQueries = () => {
|
16
|
+
const queryParams = parseQuery(location);
|
17
|
+
const path = getTenantPath({
|
18
|
+
...queryParams,
|
19
|
+
[TenantTabsGroups.diagnosticsTab]: TENANT_DIAGNOSTICS_TABS_IDS.topQueries,
|
20
|
+
queryMode: 'running',
|
21
|
+
});
|
22
|
+
history.push(path);
|
23
|
+
};
|
24
|
+
return (_jsx("div", { className: b(), children: _jsx(Card, { className: b('card'), type: "container", view: "outlined", children: _jsxs(Flex, { direction: "row", justifyContent: "space-between", alignItems: "center", gap: 4, className: b('content'), children: [_jsx(Flex, { children: _jsx(Text, { variant: "subheader-2", className: b('title'), children: i18n('title_queries-activity') }) }), _jsxs(Flex, { wrap: true, alignItems: "center", gap: 1, className: b('stats'), children: [_jsx(Label, { theme: runningQueriesCount > 0 ? 'success' : 'unknown', icon: _jsx(Icon, { data: CirclePlay }), size: "s", value: String(runningQueriesCount), children: i18n('field_running-queries') }), _jsx(Label, { theme: "unknown", icon: _jsx(Icon, { data: Display }), size: "s", value: String(uniqueApplications), children: i18n('field_applications') }), _jsx(Label, { theme: "unknown", icon: _jsx(Icon, { data: Person }), size: "s", value: String(uniqueUsers), children: i18n('field_users') }), runningQueriesCount > 0 && (_jsx(Button, { view: "outlined", size: "s", onClick: handleOpenRunningQueries, className: b('open-queries-button'), children: i18n('action_open-running-queries') }))] })] }) }) }));
|
25
|
+
}
|
26
|
+
//# sourceMappingURL=QueriesActivityAlert.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"QueriesActivityAlert.js","sourceRoot":"","sources":["../../../src/components/QueriesActivityBar/QueriesActivityAlert.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
.queries-activity-alert {
|
2
|
+
$b: &;
|
3
|
+
|
4
|
+
border-radius: var(--g-border-radius-s);
|
5
|
+
|
6
|
+
&__card {
|
7
|
+
width: 100%;
|
8
|
+
padding: 0;
|
9
|
+
|
10
|
+
border: 1px solid var(--g-color-line-generic);
|
11
|
+
border-radius: var(--g-border-radius-s);
|
12
|
+
}
|
13
|
+
|
14
|
+
&__content {
|
15
|
+
padding: calc(var(--g-spacing-5) - 1px) var(--g-spacing-4);
|
16
|
+
}
|
17
|
+
|
18
|
+
&__title {
|
19
|
+
color: var(--g-color-text-primary);
|
20
|
+
}
|
21
|
+
|
22
|
+
&__open-queries-button {
|
23
|
+
margin-left: var(--g-spacing-1);
|
24
|
+
}
|
25
|
+
}
|
@@ -1,100 +1,20 @@
|
|
1
|
-
import { jsx as _jsx
|
2
|
-
import
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import {
|
6
|
-
import { TenantTabsGroups, getTenantPath } from '../../containers/Tenant/TenantPages';
|
7
|
-
import { parseQuery } from '../../routes';
|
8
|
-
import { topQueriesApi } from '../../store/reducers/executeTopQueries/executeTopQueries';
|
9
|
-
import { TENANT_DIAGNOSTICS_TABS_IDS } from '../../store/reducers/tenant/constants';
|
10
|
-
import { cn } from '../../utils/cn';
|
11
|
-
import { useAutoRefreshInterval } from '../../utils/hooks';
|
12
|
-
import { chartApi } from '../MetricChart/reducer';
|
13
|
-
import { QueriesActivityCharts } from './QueriesActivityCharts';
|
14
|
-
import i18n from './i18n';
|
15
|
-
import { calculateLatency, calculateQueriesPerSecond, formatTrendValue } from './utils';
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { QueriesActivityAlert } from './QueriesActivityAlert';
|
3
|
+
import { QueriesActivityExpandable } from './QueriesActivityExpandable';
|
4
|
+
import { QueriesActivitySkeleton } from './QueriesActivitySkeleton';
|
5
|
+
import { useQueriesActivityData } from './useQueriesActivityData';
|
16
6
|
import './QueriesActivityBar.scss';
|
17
|
-
const b = cn('queries-activity-bar');
|
18
7
|
export function QueriesActivityBar({ tenantName }) {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
* Activity bar should be hidden, if charts are not enabled:
|
31
|
-
* 1. GraphShard is not enabled
|
32
|
-
* 2. ydb version does not have /viewer/json/render endpoint (400, 404, CORS error, etc.)
|
33
|
-
*
|
34
|
-
* If at least one chart successfully loaded, activity bar should be shown
|
35
|
-
* @link https://github.com/ydb-platform/ydb-embedded-ui/issues/659
|
36
|
-
* @todo disable only for specific errors ('GraphShard is not enabled') after ydb-stable-24 is generally used
|
37
|
-
*/
|
38
|
-
const handleChartDataStatusChange = React.useCallback((chartStatus) => {
|
39
|
-
if (chartStatus === 'success') {
|
40
|
-
setIsActivityBarHidden(false);
|
41
|
-
}
|
42
|
-
}, []);
|
43
|
-
// Fetch running queries
|
44
|
-
const { data: runningQueriesData } = topQueriesApi.useGetRunningQueriesQuery({
|
45
|
-
database: tenantName,
|
46
|
-
filters: {},
|
47
|
-
}, { pollingInterval: shouldRefresh });
|
48
|
-
// Fetch queries per second data for header metrics
|
49
|
-
const { data: queriesPerSecData } = chartApi.useGetChartDataQuery({
|
50
|
-
database: tenantName,
|
51
|
-
metrics: [{ target: 'queries.requests' }],
|
52
|
-
timeFrame: queriesTimeFrame,
|
53
|
-
maxDataPoints: 30,
|
54
|
-
}, { pollingInterval: shouldRefresh });
|
55
|
-
// Fetch latency data for header metrics
|
56
|
-
const { data: latencyData } = chartApi.useGetChartDataQuery({
|
57
|
-
database: tenantName,
|
58
|
-
metrics: [{ target: 'queries.latencies.p99' }],
|
59
|
-
timeFrame: latenciesTimeFrame,
|
60
|
-
maxDataPoints: 30,
|
61
|
-
}, { pollingInterval: shouldRefresh });
|
62
|
-
const runningQueriesCount = ((_c = (_b = (_a = runningQueriesData === null || runningQueriesData === void 0 ? void 0 : runningQueriesData.resultSets) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.result) === null || _c === void 0 ? void 0 : _c.length) || 0;
|
63
|
-
const qps = React.useMemo(() => { var _a, _b; return calculateQueriesPerSecond((_b = (_a = queriesPerSecData === null || queriesPerSecData === void 0 ? void 0 : queriesPerSecData.metrics) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.data); }, [(_e = (_d = queriesPerSecData === null || queriesPerSecData === void 0 ? void 0 : queriesPerSecData.metrics) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.data]);
|
64
|
-
const latency = React.useMemo(() => { var _a, _b; return calculateLatency((_b = (_a = latencyData === null || latencyData === void 0 ? void 0 : latencyData.metrics) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.data); }, [(_g = (_f = latencyData === null || latencyData === void 0 ? void 0 : latencyData.metrics) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.data]);
|
65
|
-
// Calculate unique applications and users
|
66
|
-
const uniqueApplications = React.useMemo(() => {
|
67
|
-
var _a, _b, _c;
|
68
|
-
const apps = new Set();
|
69
|
-
(_c = (_b = (_a = runningQueriesData === null || runningQueriesData === void 0 ? void 0 : runningQueriesData.resultSets) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.result) === null || _c === void 0 ? void 0 : _c.forEach((row) => {
|
70
|
-
if (row.ApplicationName) {
|
71
|
-
apps.add(String(row.ApplicationName));
|
72
|
-
}
|
73
|
-
});
|
74
|
-
return apps.size;
|
75
|
-
}, [runningQueriesData]);
|
76
|
-
const uniqueUsers = React.useMemo(() => {
|
77
|
-
var _a, _b, _c;
|
78
|
-
const users = new Set();
|
79
|
-
(_c = (_b = (_a = runningQueriesData === null || runningQueriesData === void 0 ? void 0 : runningQueriesData.resultSets) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.result) === null || _c === void 0 ? void 0 : _c.forEach((row) => {
|
80
|
-
if (row.UserSID) {
|
81
|
-
users.add(String(row.UserSID));
|
82
|
-
}
|
83
|
-
});
|
84
|
-
return users.size;
|
85
|
-
}, [runningQueriesData]);
|
86
|
-
const handleOpenRunningQueries = () => {
|
87
|
-
const queryParams = parseQuery(location);
|
88
|
-
const path = getTenantPath({
|
89
|
-
...queryParams,
|
90
|
-
[TenantTabsGroups.diagnosticsTab]: TENANT_DIAGNOSTICS_TABS_IDS.topQueries,
|
91
|
-
queryMode: 'running',
|
92
|
-
});
|
93
|
-
history.push(path);
|
94
|
-
};
|
95
|
-
const handleToggleExpanded = () => {
|
96
|
-
setExpanded(!expanded);
|
97
|
-
};
|
98
|
-
return (_jsx("div", { className: b({ expanded }), style: { display: isActivityBarHidden ? 'none' : undefined }, children: _jsxs(Card, { className: b('card'), type: "container", view: expanded ? 'outlined' : 'raised', children: [_jsxs("div", { className: b('header'), onClick: handleToggleExpanded, children: [_jsxs(Flex, { justifyContent: "space-between", className: b('content-wrapper'), children: [_jsxs(Flex, { direction: "column", className: b('title-section'), children: [_jsx(Text, { variant: "subheader-2", className: b('title'), children: i18n('title_queries-activity') }), _jsx(Text, { color: "secondary", variant: "caption-2", className: b('subtitle'), children: i18n('context_monitor-changes-realtime') })] }), _jsxs("div", { className: b('metrics'), children: [_jsx(Label, { theme: runningQueriesCount > 0 ? 'success' : 'unknown', size: "s", icon: _jsx(Icon, { data: CirclePlay, size: 14 }), children: runningQueriesCount }), _jsx(Label, { theme: "clear", size: "s", icon: _jsx(Icon, { data: Rocket, size: 14 }), value: formatTrendValue(qps.trend.value), children: i18n('value_per-sec', { count: qps.value }) }), _jsx(Label, { theme: "clear", size: "s", icon: _jsx(Icon, { data: Clock, size: 14 }), value: formatTrendValue(latency.trend.value), children: i18n('value_ms', { time: latency.value }) })] })] }), _jsx(ArrowToggle, { direction: expanded ? 'top' : 'bottom' })] }), expanded && (_jsx("div", { className: b('content'), children: _jsxs("div", { className: b('stats'), children: [_jsx(Label, { theme: "unknown", icon: _jsx(Icon, { data: CirclePlay }), size: "s", value: String(runningQueriesCount), children: i18n('field_running-queries') }), _jsx(Label, { theme: "unknown", icon: _jsx(Icon, { data: Display }), size: "s", value: String(uniqueApplications), children: i18n('field_applications') }), _jsx(Label, { theme: "unknown", icon: _jsx(Icon, { data: Person }), size: "s", value: String(uniqueUsers), children: i18n('field_users') }), _jsx(Button, { view: "outlined", size: "s", onClick: handleOpenRunningQueries, className: b('open-queries-button'), children: i18n('action_open-running-queries') })] }) })), _jsx(QueriesActivityCharts, { tenantName: tenantName, expanded: expanded, onChartDataStatusChange: handleChartDataStatusChange })] }) }));
|
8
|
+
const { runningQueriesCount, uniqueApplications, uniqueUsers, qps, latency, areChartsAvailable } = useQueriesActivityData(tenantName);
|
9
|
+
// Show skeleton while determining chart availability
|
10
|
+
if (areChartsAvailable === null) {
|
11
|
+
return _jsx(QueriesActivitySkeleton, {});
|
12
|
+
}
|
13
|
+
// Render compact alert-style mode when charts are not available
|
14
|
+
if (areChartsAvailable === false) {
|
15
|
+
return (_jsx(QueriesActivityAlert, { runningQueriesCount: runningQueriesCount, uniqueApplications: uniqueApplications, uniqueUsers: uniqueUsers }));
|
16
|
+
}
|
17
|
+
// Render expandable mode when charts are available
|
18
|
+
return (_jsx(QueriesActivityExpandable, { tenantName: tenantName, runningQueriesCount: runningQueriesCount, uniqueApplications: uniqueApplications, uniqueUsers: uniqueUsers, qps: qps, latency: latency }));
|
99
19
|
}
|
100
20
|
//# sourceMappingURL=QueriesActivityBar.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"QueriesActivityBar.js","sourceRoot":"","sources":["../../../src/components/QueriesActivityBar/QueriesActivityBar.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
1
|
+
{"version":3,"file":"QueriesActivityBar.js","sourceRoot":"","sources":["../../../src/components/QueriesActivityBar/QueriesActivityBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAC,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,sBAAsB,EAAC,MAAM,0BAA0B,CAAC;AAEhE,OAAO,2BAA2B,CAAC;AAMnC,MAAM,UAAU,kBAAkB,CAAC,EAAC,UAAU,EAA0B;IACpE,MAAM,EAAC,mBAAmB,EAAE,kBAAkB,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,kBAAkB,EAAC,GAC1F,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAEvC,qDAAqD;IACrD,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,KAAC,uBAAuB,KAAG,CAAC;IACvC,CAAC;IAED,gEAAgE;IAChE,IAAI,kBAAkB,KAAK,KAAK,EAAE,CAAC;QAC/B,OAAO,CACH,KAAC,oBAAoB,IACjB,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,WAAW,GAC1B,CACL,CAAC;IACN,CAAC;IAED,mDAAmD;IACnD,OAAO,CACH,KAAC,yBAAyB,IACtB,UAAU,EAAE,UAAU,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,GAClB,CACL,CAAC;AACN,CAAC"}
|