ydb-embedded-ui 8.26.2 → 9.1.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/DiskStateProgressBar/DiskStateProgressBar.js +1 -1
- package/dist/components/Drawer/Drawer.d.ts +1 -1
- package/dist/components/Drawer/Drawer.js +11 -4
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.scss +6 -1
- package/dist/components/EnableFullscreenButton/EnableFullscreenButton.d.ts +3 -1
- package/dist/components/EnableFullscreenButton/EnableFullscreenButton.js +2 -2
- package/dist/components/EnableFullscreenButton/EnableFullscreenButton.js.map +1 -1
- package/dist/components/EntityStatus/EntityStatus.d.ts +2 -1
- package/dist/components/EntityStatus/EntityStatus.js +6 -3
- package/dist/components/EntityStatus/EntityStatus.js.map +1 -1
- package/dist/components/EntityStatusNew/i18n/en.json +1 -1
- package/dist/components/JsonViewer/JsonViewer.d.ts +2 -0
- package/dist/components/JsonViewer/JsonViewer.js +4 -4
- package/dist/components/JsonViewer/JsonViewer.js.map +1 -1
- package/dist/components/JsonViewer/JsonViewer.scss +2 -0
- package/dist/components/JsonViewer/components/Cell.d.ts +1 -0
- package/dist/components/JsonViewer/components/Cell.js +6 -6
- package/dist/components/JsonViewer/components/Cell.js.map +1 -1
- package/dist/components/JsonViewer/components/FullValueDialog.js +5 -1
- package/dist/components/JsonViewer/components/FullValueDialog.js.map +1 -1
- package/dist/components/MemoryViewer/MemoryViewer.js +1 -1
- package/dist/components/ProgressViewer/ProgressViewer.js +1 -1
- package/dist/components/ShortyString/ShortyString.scss +1 -1
- package/dist/components/TableWithControlsLayout/TableWithControlsLayout.scss +1 -1
- package/dist/components/Tags/Tags.js +2 -1
- package/dist/components/Tags/Tags.js.map +1 -1
- package/dist/components/VDisk/utils.d.ts +2 -2
- package/dist/components/VDisk/utils.js +12 -13
- package/dist/components/VDisk/utils.js.map +1 -1
- package/dist/components/VDiskInfo/VDiskInfo.js +5 -1
- package/dist/components/VDiskInfo/VDiskInfo.js.map +1 -1
- package/dist/components/VDiskPopup/VDiskPopup.js +15 -12
- package/dist/components/VDiskPopup/VDiskPopup.js.map +1 -1
- package/dist/containers/AppWithClusters/AppWithClusters.d.ts +1 -5
- package/dist/containers/AppWithClusters/AppWithClusters.js +4 -5
- package/dist/containers/AppWithClusters/AppWithClusters.js.map +1 -1
- package/dist/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.d.ts +2 -1
- package/dist/containers/AppWithClusters/ExtendedCluster/ExtendedCluster.js.map +1 -1
- package/dist/containers/AppWithClusters/ExtendedTenant/ExtendedTenant.d.ts +2 -1
- package/dist/containers/AppWithClusters/ExtendedTenant/ExtendedTenant.js.map +1 -1
- package/dist/containers/Cluster/ClusterInfo/ClusterInfo.js +3 -3
- package/dist/containers/Cluster/ClusterInfo/ClusterInfo.scss +2 -0
- package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.js +3 -3
- package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.js.map +1 -1
- package/dist/containers/Cluster/ClusterInfo/components/DiskGroupsStatsBars/DiskGroupsStats.scss +6 -1
- package/dist/containers/Cluster/ClusterInfo/utils/utils.js +3 -3
- package/dist/containers/Cluster/ClusterInfo/utils/utils.js.map +1 -1
- package/dist/containers/Node/Node.js +1 -1
- package/dist/containers/Node/Node.js.map +1 -1
- package/dist/containers/Operations/constants.js +1 -0
- package/dist/containers/Operations/constants.js.map +1 -1
- package/dist/containers/Operations/i18n/en.json +1 -0
- package/dist/containers/Operations/i18n/index.d.ts +1 -1
- package/dist/containers/Operations/useOperationsQueryParams.js +1 -1
- package/dist/containers/Operations/useOperationsQueryParams.js.map +1 -1
- package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js +1 -1
- package/dist/containers/PDiskPage/PDiskSpaceDistribution/PDiskSpaceDistribution.js.map +1 -1
- package/dist/containers/Tablets/Tablets.d.ts +6 -1
- package/dist/containers/Tablets/Tablets.js +4 -3
- package/dist/containers/Tablets/Tablets.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.d.ts +1 -3
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.js +9 -33
- package/dist/containers/Tenant/Diagnostics/Describe/Describe.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.d.ts +2 -1
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js +2 -2
- package/dist/containers/Tenant/Diagnostics/Diagnostics.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.d.ts +2 -2
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js +13 -7
- package/dist/containers/Tenant/Diagnostics/DiagnosticsPages.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.js +7 -10
- package/dist/containers/Tenant/Diagnostics/Overview/ChangefeedInfo/ChangefeedInfo.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/Overview.js +8 -32
- package/dist/containers/Tenant/Diagnostics/Overview/Overview.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.js +10 -1
- package/dist/containers/Tenant/Diagnostics/Overview/TopicInfo/TopicInfo.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js +1 -1
- package/dist/containers/Tenant/Diagnostics/Partitions/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/NotFoundContainer.d.ts +5 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/NotFoundContainer.js +10 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/NotFoundContainer.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetails.d.ts +9 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetails.js +13 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetails.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetails.scss +43 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetailsDrawerContent.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetailsDrawerContent.js +35 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/QueryDetails/QueryDetailsDrawerContent.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.d.ts +1 -2
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js +28 -7
- package/dist/containers/Tenant/Diagnostics/TopQueries/RunningQueriesData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js +5 -25
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueries.scss +29 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.d.ts +1 -2
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js +37 -8
- package/dist/containers/Tenant/Diagnostics/TopQueries/TopQueriesData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useSetSelectedTopQueryRowFromParams.d.ts +8 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useSetSelectedTopQueryRowFromParams.js +33 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/hooks/useSetSelectedTopQueryRowFromParams.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/i18n/en.json +7 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils/generateShareableUrl.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils/generateShareableUrl.js +20 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils/generateShareableUrl.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils/getTopQueryRowQueryParams.d.ts +8 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils/getTopQueryRowQueryParams.js +16 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils/getTopQueryRowQueryParams.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils.d.ts +3 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils.js +69 -0
- package/dist/containers/Tenant/Diagnostics/TopQueries/utils.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js +67 -24
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.scss +8 -2
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.d.ts +2 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js +15 -7
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js +82 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.scss +53 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicDataSection.d.ts +8 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicDataSection.js +7 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicDataSection.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.d.ts +7 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.js +65 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.d.ts +6 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.js +39 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageMetadata.d.ts +6 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageMetadata.js +9 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageMetadata.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/fields.d.ts +10 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/fields.js +67 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/fields.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/shared.d.ts +2 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/shared.js +4 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/shared.js.map +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js +116 -42
- package/dist/containers/Tenant/Diagnostics/TopicData/__test__/getData.test.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/Columns.scss +25 -4
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.d.ts +16 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js +153 -117
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.d.ts +6 -4
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +30 -15
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/i18n/en.json +10 -2
- package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicDataQueryParams.d.ts +2 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicDataQueryParams.js +7 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/useTopicDataQueryParams.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js +3 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/constants.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.d.ts +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js +1 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js.map +1 -1
- package/dist/containers/Tenant/ObjectGeneral/ObjectGeneral.d.ts +2 -1
- package/dist/containers/Tenant/ObjectGeneral/ObjectGeneral.js +2 -2
- package/dist/containers/Tenant/ObjectGeneral/ObjectGeneral.js.map +1 -1
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js +1 -1
- package/dist/containers/Tenant/Query/QueryResult/QueryResultViewer.js.map +1 -1
- package/dist/containers/Tenant/Tenant.js +1 -1
- package/dist/containers/Tenant/Tenant.js.map +1 -1
- package/dist/containers/Tenant/TenantPages.d.ts +1 -0
- package/dist/containers/Tenant/TenantPages.js.map +1 -1
- package/dist/containers/Tenant/utils/schema.d.ts +0 -1
- package/dist/containers/Tenant/utils/schema.js +2 -22
- package/dist/containers/Tenant/utils/schema.js.map +1 -1
- package/dist/containers/Tenants/Tenants.js +1 -1
- package/dist/containers/Tenants/Tenants.js.map +1 -1
- package/dist/containers/VDiskPage/VDiskPage.js +19 -3
- package/dist/containers/VDiskPage/VDiskPage.js.map +1 -1
- package/dist/routes.d.ts +9 -1
- package/dist/routes.js +2 -2
- package/dist/routes.js.map +1 -1
- package/dist/services/api/viewer.d.ts +2 -5
- package/dist/services/api/viewer.js +2 -1
- package/dist/services/api/viewer.js.map +1 -1
- package/dist/store/reducers/capabilities/hooks.js +1 -1
- package/dist/store/reducers/overview/overview.d.ts +0 -36
- package/dist/store/reducers/overview/overview.js +0 -55
- package/dist/store/reducers/overview/overview.js.map +1 -1
- package/dist/store/reducers/partitions/types.d.ts +1 -1
- package/dist/store/reducers/storage/prepareGroupsDisks.js +6 -0
- package/dist/store/reducers/storage/prepareGroupsDisks.js.map +1 -1
- package/dist/store/reducers/topic.d.ts +1 -1
- package/dist/store/reducers/topic.js +1 -1
- package/dist/store/reducers/topic.js.map +1 -1
- package/dist/store/state-url-mapping.d.ts +1 -0
- package/dist/store/state-url-mapping.js +1 -0
- package/dist/store/state-url-mapping.js.map +1 -1
- package/dist/types/api/operations.d.ts +1 -1
- package/dist/types/api/topic.d.ts +1 -0
- package/dist/types/store/tablets.d.ts +1 -0
- package/dist/uiFactory/types.d.ts +5 -0
- package/dist/uiFactory/uiFactory.js +5 -1
- package/dist/uiFactory/uiFactory.js.map +1 -1
- package/dist/utils/disks/__test__/prepareDisks.test.js +2 -2
- package/dist/utils/disks/prepareDisks.js +2 -2
- package/dist/utils/downloadFile.d.ts +1 -0
- package/dist/utils/downloadFile.js +8 -4
- package/dist/utils/downloadFile.js.map +1 -1
- package/dist/utils/logs.d.ts +1 -3
- package/dist/utils/logs.js +1 -23
- package/dist/utils/logs.js.map +1 -1
- package/dist/utils/monitoring.d.ts +0 -5
- package/dist/utils/utils.d.ts +1 -0
- package/dist/utils/utils.js +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/utils/__test__/logs.test.d.ts +0 -1
- package/dist/utils/__test__/logs.test.js +0 -36
- package/dist/utils/__test__/logs.test.js.map +0 -1
@@ -3,6 +3,9 @@ import React from 'react';
|
|
3
3
|
import { NoSearchResults } from '@gravity-ui/illustrations';
|
4
4
|
import { skipToken } from '@reduxjs/toolkit/query';
|
5
5
|
import { isNil } from 'lodash';
|
6
|
+
import { DrawerWrapper } from '../../../../components/Drawer';
|
7
|
+
import EnableFullscreenButton from '../../../../components/EnableFullscreenButton/EnableFullscreenButton';
|
8
|
+
import Fullscreen from '../../../../components/Fullscreen/Fullscreen';
|
6
9
|
import { DEFAULT_TABLE_ROW_HEIGHT, ResizeablePaginatedTable, } from '../../../../components/PaginatedTable';
|
7
10
|
import { partitionsApi } from '../../../../store/reducers/partitions/partitions';
|
8
11
|
import { topicApi } from '../../../../store/reducers/topic';
|
@@ -12,12 +15,15 @@ import { renderPaginatedTableErrorMessage } from '../../../../utils/renderPagina
|
|
12
15
|
import { safeParseNumber } from '../../../../utils/utils';
|
13
16
|
import { EmptyFilter } from '../../../Storage/EmptyFilter/EmptyFilter';
|
14
17
|
import { TopicDataControls } from './TopicDataControls/TopicDataControls';
|
18
|
+
import { TopicMessageDetails } from './TopicMessageDetails/TopicMessageDetails';
|
15
19
|
import { DEFAULT_TOPIC_DATA_COLUMNS, REQUIRED_TOPIC_DATA_COLUMNS, getAllColumns, } from './columns/columns';
|
16
20
|
import { generateTopicDataGetter } from './getData';
|
17
21
|
import i18n from './i18n';
|
18
22
|
import { useTopicDataQueryParams } from './useTopicDataQueryParams';
|
19
23
|
import { TOPIC_DATA_COLUMNS_TITLES, TOPIC_DATA_COLUMNS_WIDTH_LS_KEY, TOPIC_DATA_FETCH_LIMIT, TOPIC_DATA_SELECTED_COLUMNS_LS_KEY, b, } from './utils/constants';
|
20
24
|
import './TopicData.scss';
|
25
|
+
const PAGINATED_TABLE_LIMIT = 50000;
|
26
|
+
const columns = getAllColumns();
|
21
27
|
export function TopicData({ parentRef, path, database }) {
|
22
28
|
const [autoRefreshInterval] = useAutoRefreshInterval();
|
23
29
|
const [startOffset, setStartOffset] = React.useState();
|
@@ -25,10 +31,11 @@ export function TopicData({ parentRef, path, database }) {
|
|
25
31
|
const [controlsKey, setControlsKey] = React.useState(0);
|
26
32
|
const [emptyData, setEmptyData] = React.useState(false);
|
27
33
|
const [baseOffset, setBaseOffset] = React.useState();
|
34
|
+
const [truncated, setTruncated] = React.useState(false);
|
28
35
|
const [baseEndOffset, setBaseEndOffset] = React.useState();
|
29
36
|
const startRef = React.useRef();
|
30
37
|
startRef.current = startOffset;
|
31
|
-
const { selectedPartition, selectedOffset, startTimestamp, topicDataFilter, handleSelectedOffsetChange, handleStartTimestampChange, handleSelectedPartitionChange, } = useTopicDataQueryParams();
|
38
|
+
const { selectedPartition, selectedOffset, startTimestamp, topicDataFilter, activeOffset, handleSelectedOffsetChange, handleStartTimestampChange, handleSelectedPartitionChange, handleActiveOffsetChange, } = useTopicDataQueryParams();
|
32
39
|
React.useEffect(() => {
|
33
40
|
return () => {
|
34
41
|
handleSelectedPartitionChange(undefined);
|
@@ -54,20 +61,30 @@ export function TopicData({ parentRef, path, database }) {
|
|
54
61
|
React.useEffect(() => {
|
55
62
|
const selectedPartitionData = partitions === null || partitions === void 0 ? void 0 : partitions.find(({ partitionId }) => partitionId === selectedPartition);
|
56
63
|
if (selectedPartitionData) {
|
57
|
-
|
58
|
-
setBaseOffset(safeParseNumber(selectedPartitionData.startOffset));
|
59
|
-
}
|
64
|
+
let endOffset = baseEndOffset;
|
60
65
|
if (!baseEndOffset) {
|
61
|
-
|
66
|
+
endOffset = safeParseNumber(selectedPartitionData.endOffset);
|
67
|
+
setBaseEndOffset(endOffset);
|
68
|
+
}
|
69
|
+
if (!baseOffset) {
|
70
|
+
const partitionStartOffset = safeParseNumber(selectedPartitionData.startOffset);
|
71
|
+
const newStartOffset = Math.max((endOffset !== null && endOffset !== void 0 ? endOffset : 0) - PAGINATED_TABLE_LIMIT, partitionStartOffset);
|
72
|
+
setTruncated(newStartOffset !== partitionStartOffset);
|
73
|
+
setBaseOffset(newStartOffset);
|
62
74
|
}
|
63
75
|
}
|
64
76
|
}, [selectedPartition, partitions, baseOffset, baseEndOffset, startOffset, endOffset]);
|
65
77
|
React.useEffect(() => {
|
66
78
|
if (partitions && partitions.length && isNil(selectedPartition)) {
|
67
|
-
|
79
|
+
const firstPartitionId = partitions[0].partitionId;
|
80
|
+
handleSelectedPartitionChange(isNil(firstPartitionId) ? undefined : String(firstPartitionId));
|
68
81
|
}
|
69
82
|
}, [partitions, selectedPartition, handleSelectedPartitionChange]);
|
70
|
-
const { columnsToShow, columnsToSelect, setColumns } = useSelectedColumns(
|
83
|
+
const { columnsToShow, columnsToSelect, setColumns } = useSelectedColumns(columns, TOPIC_DATA_SELECTED_COLUMNS_LS_KEY, TOPIC_DATA_COLUMNS_TITLES, DEFAULT_TOPIC_DATA_COLUMNS, REQUIRED_TOPIC_DATA_COLUMNS);
|
84
|
+
const setBoundOffsets = React.useCallback(({ startOffset, endOffset }) => {
|
85
|
+
setStartOffset(startOffset);
|
86
|
+
setEndOffset(endOffset);
|
87
|
+
}, []);
|
71
88
|
React.useEffect(() => {
|
72
89
|
var _a, _b;
|
73
90
|
//values should be recalculated only when data is fetched
|
@@ -81,10 +98,12 @@ export function TopicData({ parentRef, path, database }) {
|
|
81
98
|
setEmptyData(true);
|
82
99
|
}
|
83
100
|
if (currentData) {
|
84
|
-
|
85
|
-
|
101
|
+
setBoundOffsets({
|
102
|
+
startOffset: safeParseNumber(currentData.StartOffset),
|
103
|
+
endOffset: safeParseNumber(currentData.EndOffset),
|
104
|
+
});
|
86
105
|
}
|
87
|
-
}, [isFetching, currentData, error]);
|
106
|
+
}, [isFetching, currentData, error, setBoundOffsets]);
|
88
107
|
const tableFilters = React.useMemo(() => ({
|
89
108
|
path,
|
90
109
|
database,
|
@@ -107,34 +126,58 @@ export function TopicData({ parentRef, path, database }) {
|
|
107
126
|
behavior: 'instant',
|
108
127
|
});
|
109
128
|
}, [baseOffset, parentRef]);
|
129
|
+
//this variable is used to scroll to active offset the very first time on open page
|
130
|
+
const initialActiveOffset = React.useRef(activeOffset);
|
110
131
|
React.useEffect(() => {
|
111
132
|
if (isFetching) {
|
112
133
|
return;
|
113
134
|
}
|
114
|
-
|
115
|
-
if (
|
116
|
-
const
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
135
|
+
let currentOffset;
|
136
|
+
if (isNil(initialActiveOffset.current)) {
|
137
|
+
const messages = currentData === null || currentData === void 0 ? void 0 : currentData.Messages;
|
138
|
+
if (messages === null || messages === void 0 ? void 0 : messages.length) {
|
139
|
+
currentOffset = safeParseNumber(messages[0].Offset);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
else {
|
143
|
+
currentOffset = safeParseNumber(initialActiveOffset.current);
|
144
|
+
initialActiveOffset.current = undefined;
|
145
|
+
}
|
146
|
+
if (!isNil(currentOffset)) {
|
147
|
+
scrollToOffset(currentOffset);
|
121
148
|
}
|
122
149
|
}, [currentData, isFetching, scrollToOffset]);
|
123
150
|
const renderControls = () => {
|
124
151
|
return (_jsx(TopicDataControls
|
125
152
|
// component has uncontrolled components inside, so it should be rerendered on filters reset
|
126
|
-
, { columnsToSelect: columnsToSelect, handleSelectedColumnsUpdate: setColumns, partitions: partitions, partitionsLoading: partitionsLoading, partitionsError: partitionsError, startOffset: startOffset, endOffset: endOffset, scrollToOffset: scrollToOffset }, controlsKey));
|
153
|
+
, { columnsToSelect: columnsToSelect, handleSelectedColumnsUpdate: setColumns, partitions: partitions, partitionsLoading: partitionsLoading, partitionsError: partitionsError, startOffset: startOffset, endOffset: endOffset, truncatedData: truncated, scrollToOffset: scrollToOffset }, controlsKey));
|
127
154
|
};
|
128
155
|
const renderEmptyDataMessage = () => {
|
129
156
|
const hasFilters = selectedOffset || startTimestamp;
|
130
157
|
return (_jsx(EmptyFilter, { title: i18n('label_nothing-found'), message: i18n('description_nothing-found'), onShowAll: hasFilters ? resetFilters : undefined, showAll: i18n('action_show-all'), image: _jsx(NoSearchResults, { width: 230, height: 230 }) }));
|
131
158
|
};
|
132
|
-
const getTopicData = React.useMemo(() => generateTopicDataGetter({
|
159
|
+
const getTopicData = React.useMemo(() => generateTopicDataGetter({ setBoundOffsets, baseOffset }), [baseOffset, setBoundOffsets]);
|
160
|
+
const closeDrawer = React.useCallback(() => {
|
161
|
+
handleActiveOffsetChange(undefined);
|
162
|
+
}, [handleActiveOffsetChange]);
|
163
|
+
const renderDrawerContent = React.useCallback(() => {
|
164
|
+
return (_jsx(Fullscreen, { children: _jsx(TopicMessageDetails, { database: database, path: path }) }));
|
165
|
+
}, [database, path]);
|
133
166
|
return (!isNil(baseOffset) &&
|
134
|
-
!isNil(baseEndOffset) && (_jsx(
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
167
|
+
!isNil(baseEndOffset) && (_jsx(DrawerWrapper, { isDrawerVisible: !isNil(activeOffset), onCloseDrawer: closeDrawer, renderDrawerContent: renderDrawerContent, drawerId: "topic-data-details", storageKey: "topic-data-details-drawer-width", detectClickOutside: true, isPercentageWidth: true, drawerControls: [
|
168
|
+
{ type: 'copyLink', link: window.location.href },
|
169
|
+
{
|
170
|
+
type: 'custom',
|
171
|
+
node: _jsx(EnableFullscreenButton, { disabled: Boolean(error), view: "flat" }),
|
172
|
+
key: 'fullscreen',
|
173
|
+
},
|
174
|
+
{ type: 'close' },
|
175
|
+
], title: i18n('label_message'), headerClassName: b('drawer-header'), children: _jsx(ResizeablePaginatedTable, { columnsWidthLSKey: TOPIC_DATA_COLUMNS_WIDTH_LS_KEY, parentRef: parentRef, columns: columnsToShow, fetchData: getTopicData, initialEntitiesCount: baseEndOffset - baseOffset, limit: TOPIC_DATA_FETCH_LIMIT, renderControls: renderControls, renderErrorMessage: renderPaginatedTableErrorMessage, renderEmptyDataMessage: renderEmptyDataMessage, filters: tableFilters, tableName: "topicData", rowHeight: DEFAULT_TABLE_ROW_HEIGHT, keepCache: false, getRowClassName: (row) => {
|
176
|
+
return b('row', {
|
177
|
+
active: Boolean(String(row.Offset) === selectedOffset ||
|
178
|
+
String(row.Offset) === activeOffset),
|
179
|
+
removed: row.removed,
|
180
|
+
});
|
181
|
+
} }) })));
|
139
182
|
}
|
140
183
|
//# sourceMappingURL=TopicData.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TopicData.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicData.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,QAAQ,CAAC;
|
1
|
+
{"version":3,"file":"TopicData.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicData.tsx"],"names":[],"mappings":"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"}
|
@@ -12,8 +12,8 @@
|
|
12
12
|
&__date-picker {
|
13
13
|
min-width: 265px;
|
14
14
|
}
|
15
|
-
&
|
16
|
-
|
15
|
+
&__offset-input {
|
16
|
+
width: max-content;
|
17
17
|
}
|
18
18
|
|
19
19
|
&__row {
|
@@ -24,5 +24,11 @@
|
|
24
24
|
background: var(--g-color-base-selection-hover) !important;
|
25
25
|
}
|
26
26
|
}
|
27
|
+
&_removed {
|
28
|
+
color: var(--g-color-text-secondary);
|
29
|
+
}
|
30
|
+
}
|
31
|
+
&__scroll-button {
|
32
|
+
margin-right: var(--g-spacing-half);
|
27
33
|
}
|
28
34
|
}
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.d.ts
CHANGED
@@ -8,7 +8,8 @@ interface TopicDataControlsProps {
|
|
8
8
|
partitionsError: unknown;
|
9
9
|
startOffset?: number;
|
10
10
|
endOffset?: number;
|
11
|
+
truncatedData?: boolean;
|
11
12
|
scrollToOffset: (offset: number) => void;
|
12
13
|
}
|
13
|
-
export declare function TopicDataControls({ columnsToSelect, handleSelectedColumnsUpdate, startOffset, endOffset, partitions, partitionsLoading, partitionsError, scrollToOffset, }: TopicDataControlsProps): import("react/jsx-runtime").JSX.Element;
|
14
|
+
export declare function TopicDataControls({ columnsToSelect, handleSelectedColumnsUpdate, startOffset, endOffset, partitions, partitionsLoading, partitionsError, scrollToOffset, truncatedData, }: TopicDataControlsProps): import("react/jsx-runtime").JSX.Element;
|
14
15
|
export {};
|
@@ -3,7 +3,7 @@ import React from 'react';
|
|
3
3
|
import { RelativeDatePicker } from '@gravity-ui/date-components';
|
4
4
|
import { dateTimeParse } from '@gravity-ui/date-utils';
|
5
5
|
import { CircleChevronDownFill } from '@gravity-ui/icons';
|
6
|
-
import { ActionTooltip, Button, Icon, RadioButton, Select, TableColumnSetup, Text, } from '@gravity-ui/uikit';
|
6
|
+
import { ActionTooltip, Button, Flex, HelpMark, Icon, RadioButton, Select, TableColumnSetup, Text, } from '@gravity-ui/uikit';
|
7
7
|
import { isNil } from 'lodash';
|
8
8
|
import { DebouncedInput } from '../../../../../components/DebouncedInput/DebouncedTextInput';
|
9
9
|
import { formatNumber } from '../../../../../utils/dataFormatters/dataFormatters';
|
@@ -13,11 +13,11 @@ import i18n from '../i18n';
|
|
13
13
|
import { useTopicDataQueryParams } from '../useTopicDataQueryParams';
|
14
14
|
import { b } from '../utils/constants';
|
15
15
|
import { TopicDataFilterValues } from '../utils/types';
|
16
|
-
export function TopicDataControls({ columnsToSelect, handleSelectedColumnsUpdate, startOffset, endOffset, partitions, partitionsLoading, partitionsError, scrollToOffset, }) {
|
16
|
+
export function TopicDataControls({ columnsToSelect, handleSelectedColumnsUpdate, startOffset, endOffset, partitions, partitionsLoading, partitionsError, scrollToOffset, truncatedData, }) {
|
17
17
|
const { selectedPartition, handleSelectedPartitionChange: handleSelectedPartitionParamChange, handleSelectedOffsetChange, handleStartTimestampChange, } = useTopicDataQueryParams();
|
18
18
|
const partitionsToSelect = partitions === null || partitions === void 0 ? void 0 : partitions.map(({ partitionId }) => ({
|
19
|
-
content: partitionId,
|
20
|
-
value: partitionId,
|
19
|
+
content: String(partitionId),
|
20
|
+
value: String(partitionId),
|
21
21
|
}));
|
22
22
|
const handleSelectedPartitionChange = React.useCallback((value) => {
|
23
23
|
handleSelectedPartitionParamChange(value[0]);
|
@@ -28,10 +28,18 @@ export function TopicDataControls({ columnsToSelect, handleSelectedColumnsUpdate
|
|
28
28
|
handleStartTimestampChange,
|
29
29
|
handleSelectedOffsetChange,
|
30
30
|
]);
|
31
|
-
return (_jsxs(React.Fragment, { children: [_jsx(Select, { className: b('partition-select'), label: i18n('label_partition-id'), options: partitionsToSelect, value: selectedPartition ? [selectedPartition] : undefined, onUpdate: handleSelectedPartitionChange, filterable: partitions && partitions.length > 5, disabled: !partitions || !partitions.length, errorPlacement: "inside", errorMessage: prepareErrorMessage(partitionsError), error: Boolean(partitionsError), loading: partitionsLoading }), _jsx(TopicDataStartControls, { scrollToOffset: scrollToOffset }), !isNil(startOffset) && !isNil(endOffset) && (_jsxs(Text, { color: "secondary", whiteSpace: "nowrap", children: [formatNumber(startOffset), "\u2014", formatNumber(endOffset - 1)] })
|
31
|
+
return (_jsxs(React.Fragment, { children: [_jsx(Select, { className: b('partition-select'), label: i18n('label_partition-id'), options: partitionsToSelect, value: selectedPartition ? [selectedPartition] : undefined, onUpdate: handleSelectedPartitionChange, filterable: partitions && partitions.length > 5, disabled: !partitions || !partitions.length, errorPlacement: "inside", errorMessage: prepareErrorMessage(partitionsError), error: Boolean(partitionsError), loading: partitionsLoading }), _jsx(TopicDataStartControls, { scrollToOffset: scrollToOffset }), !isNil(startOffset) && !isNil(endOffset) && (_jsxs(Flex, { gap: 1, children: [_jsxs(Text, { color: "secondary", whiteSpace: "nowrap", children: [formatNumber(startOffset), "\u2014", formatNumber(endOffset - 1)] }), truncatedData && _jsx(HelpMark, { children: i18n('description_last-messages') })] })), _jsx(TableColumnSetup, { popupWidth: 242, items: columnsToSelect, showStatus: true, onUpdate: handleSelectedColumnsUpdate, sortable: false })] }));
|
32
32
|
}
|
33
33
|
function TopicDataStartControls({ scrollToOffset }) {
|
34
|
-
const { selectedOffset, startTimestamp, topicDataFilter, handleSelectedOffsetChange, handleStartTimestampChange, handleTopicDataFilterChange, } = useTopicDataQueryParams();
|
34
|
+
const { selectedOffset, startTimestamp, topicDataFilter, activeOffset, handleSelectedOffsetChange, handleStartTimestampChange, handleTopicDataFilterChange, } = useTopicDataQueryParams();
|
35
|
+
const inputRef = React.useRef(null);
|
36
|
+
const isDrawerVisible = !isNil(activeOffset);
|
37
|
+
React.useEffect(() => {
|
38
|
+
var _a;
|
39
|
+
if (isDrawerVisible) {
|
40
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.blur();
|
41
|
+
}
|
42
|
+
}, [isDrawerVisible]);
|
35
43
|
const onFilterChange = React.useCallback((value) => {
|
36
44
|
if (value === 'TIMESTAMP') {
|
37
45
|
handleSelectedOffsetChange(undefined);
|
@@ -59,7 +67,7 @@ function TopicDataStartControls({ scrollToOffset }) {
|
|
59
67
|
handleStartTimestampChange(newValue);
|
60
68
|
}, [handleStartTimestampChange]);
|
61
69
|
const startDateTime = dateTimeParse(Number(startTimestamp));
|
62
|
-
return (_jsxs(React.Fragment, { children: [_jsxs(RadioButton, { value: topicDataFilter, onUpdate: onFilterChange, children: [_jsx(RadioButton.Option, { value: "TIMESTAMP", children: TopicDataFilterValues.TIMESTAMP }), _jsx(RadioButton.Option, { value: "OFFSET", children: TopicDataFilterValues.OFFSET })] }), topicDataFilter === 'OFFSET' && (_jsx(DebouncedInput, { value: selectedOffset ? String(selectedOffset) : '', onUpdate: onStartOffsetChange, label: i18n('label_from'), placeholder: i18n('label_offset'), type: "number", debounce: 600, endContent: _jsx(ActionTooltip, { title: i18n('action_scroll-selected'), children: _jsx(Button, { disabled: isNil(selectedOffset) || selectedOffset === '', view: "flat-action", size: "xs", onClick: () => {
|
70
|
+
return (_jsxs(React.Fragment, { children: [_jsxs(RadioButton, { value: topicDataFilter, onUpdate: onFilterChange, children: [_jsx(RadioButton.Option, { value: "TIMESTAMP", children: TopicDataFilterValues.TIMESTAMP }), _jsx(RadioButton.Option, { value: "OFFSET", children: TopicDataFilterValues.OFFSET })] }), topicDataFilter === 'OFFSET' && (_jsx(DebouncedInput, { controlRef: inputRef, className: b('offset-input'), value: selectedOffset ? String(selectedOffset) : '', onUpdate: onStartOffsetChange, label: i18n('label_from'), placeholder: i18n('label_offset'), type: "number", debounce: 600, endContent: _jsx(ActionTooltip, { title: i18n('action_scroll-selected'), children: _jsx(Button, { disabled: isNil(selectedOffset) || selectedOffset === '', className: b('scroll-button'), view: "flat-action", size: "xs", onClick: () => {
|
63
71
|
if (selectedOffset) {
|
64
72
|
scrollToOffset(safeParseNumber(selectedOffset));
|
65
73
|
}
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TopicDataControls.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAC,qBAAqB,EAAC,MAAM,mBAAmB,CAAC;AAExD,OAAO,EACH,aAAa,EACb,MAAM,EACN,IAAI,EACJ,WAAW,EACX,MAAM,EACN,gBAAgB,EAChB,IAAI,GACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,KAAK,EAAC,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAC,cAAc,EAAC,MAAM,6DAA6D,CAAC;AAE3F,OAAO,EAAC,YAAY,EAAC,MAAM,oDAAoD,CAAC;AAChF,OAAO,EAAC,mBAAmB,EAAC,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAC,CAAC,EAAC,MAAM,oBAAoB,CAAC;AACrC,OAAO,EAAC,qBAAqB,EAAC,MAAM,gBAAgB,CAAC;
|
1
|
+
{"version":3,"file":"TopicDataControls.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicDataControls/TopicDataControls.tsx"],"names":[],"mappings":"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"}
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { Flex, Icon, Text } from '@gravity-ui/uikit';
|
4
|
+
import { skipToken } from '@reduxjs/toolkit/query';
|
5
|
+
import { isNil } from 'lodash';
|
6
|
+
import { LoaderWrapper } from '../../../../../components/LoaderWrapper/LoaderWrapper';
|
7
|
+
import { topicApi } from '../../../../../store/reducers/topic';
|
8
|
+
import { isResponseError } from '../../../../../utils/response';
|
9
|
+
import { safeParseNumber } from '../../../../../utils/utils';
|
10
|
+
import i18n from '../i18n';
|
11
|
+
import { useTopicDataQueryParams } from '../useTopicDataQueryParams';
|
12
|
+
import { TopicMessage } from './components/TopicMessage';
|
13
|
+
import { TopicMessageGeneralInfo } from './components/TopicMessageGeneralInfo';
|
14
|
+
import { TopicMessageMetadata } from './components/TopicMessageMetadata';
|
15
|
+
import { MESSAGE_SIZE_LIMIT, b } from './shared';
|
16
|
+
import cryCatIcon from '../../../../../assets/icons/cry-cat.svg';
|
17
|
+
import './TopicMessageDetails.scss';
|
18
|
+
export function TopicMessageDetails({ database, path }) {
|
19
|
+
var _a;
|
20
|
+
const { selectedPartition, activeOffset } = useTopicDataQueryParams();
|
21
|
+
const queryParams = React.useMemo(() => {
|
22
|
+
if (isNil(selectedPartition) || isNil(activeOffset)) {
|
23
|
+
return skipToken;
|
24
|
+
}
|
25
|
+
const params = {
|
26
|
+
database,
|
27
|
+
path,
|
28
|
+
partition: selectedPartition,
|
29
|
+
limit: 1,
|
30
|
+
message_size_limit: MESSAGE_SIZE_LIMIT,
|
31
|
+
};
|
32
|
+
const parsedOffset = safeParseNumber(activeOffset);
|
33
|
+
params.offset = parsedOffset;
|
34
|
+
params.last_offset = parsedOffset + 1;
|
35
|
+
return params;
|
36
|
+
}, [selectedPartition, activeOffset, database, path]);
|
37
|
+
const { currentData, error, isFetching } = topicApi.useGetTopicDataQuery(queryParams);
|
38
|
+
const messageDetails = (_a = currentData === null || currentData === void 0 ? void 0 : currentData.Messages) === null || _a === void 0 ? void 0 : _a[0];
|
39
|
+
const renderMessageGeneralInfo = () => {
|
40
|
+
if (!messageDetails) {
|
41
|
+
return null;
|
42
|
+
}
|
43
|
+
return _jsx(TopicMessageGeneralInfo, { messageData: messageDetails });
|
44
|
+
};
|
45
|
+
const renderMessageMeta = () => {
|
46
|
+
const metadata = messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.MessageMetadata;
|
47
|
+
if (!metadata) {
|
48
|
+
return null;
|
49
|
+
}
|
50
|
+
return _jsx(TopicMessageMetadata, { data: metadata });
|
51
|
+
};
|
52
|
+
const renderMessage = () => {
|
53
|
+
const message = messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.Message;
|
54
|
+
if (!message) {
|
55
|
+
return null;
|
56
|
+
}
|
57
|
+
return (_jsx(TopicMessage, { message: message, offset: messageDetails.Offset, size: messageDetails.OriginalSize }));
|
58
|
+
};
|
59
|
+
const renderContent = () => {
|
60
|
+
var _a;
|
61
|
+
const responseError = isResponseError(error);
|
62
|
+
const notFoundError = responseError && error.status === 404;
|
63
|
+
const noMessages = currentData && !((_a = currentData.Messages) === null || _a === void 0 ? void 0 : _a.length);
|
64
|
+
const isEmpty = Boolean(noMessages || notFoundError);
|
65
|
+
if (isEmpty) {
|
66
|
+
return (_jsxs(Flex, { direction: "column", grow: "grow", alignItems: "center", justifyContent: "center", height: "100%", children: [_jsx(Text, { variant: "subheader-2", children: i18n('context_message-not-found', { offset: activeOffset }) }), _jsx(Icon, { data: cryCatIcon, size: 100 })] }));
|
67
|
+
}
|
68
|
+
else if (error) {
|
69
|
+
let text = i18n('context_get-data-error');
|
70
|
+
if (responseError && typeof error.data === 'string') {
|
71
|
+
text = error.data;
|
72
|
+
}
|
73
|
+
else if (responseError && error.statusText) {
|
74
|
+
text = error.statusText;
|
75
|
+
}
|
76
|
+
return (_jsx(Text, { color: "danger", variant: "body-2", children: text }));
|
77
|
+
}
|
78
|
+
return (_jsxs(Flex, { direction: "column", gap: 4, children: [renderMessageGeneralInfo(), renderMessageMeta(), renderMessage()] }));
|
79
|
+
};
|
80
|
+
return (_jsx(LoaderWrapper, { loading: isFetching, children: _jsx("div", { className: b(), children: renderContent() }) }));
|
81
|
+
}
|
82
|
+
//# sourceMappingURL=TopicMessageDetails.js.map
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"TopicMessageDetails.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.tsx"],"names":[],"mappings":"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"}
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.scss
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
@use '../../../../../styles/mixins.scss';
|
2
|
+
|
3
|
+
.ydb-diagnostics-message-details {
|
4
|
+
width: 100%;
|
5
|
+
height: 100%;
|
6
|
+
padding: var(--g-spacing-4);
|
7
|
+
|
8
|
+
@include mixins.body-2-typography();
|
9
|
+
|
10
|
+
&__list {
|
11
|
+
--g-definition-list-item-gap: var(--g-spacing-1);
|
12
|
+
}
|
13
|
+
&__details {
|
14
|
+
padding-right: var(--g-spacing-4);
|
15
|
+
}
|
16
|
+
&__section {
|
17
|
+
border-radius: var(--g-border-radius-m) var(--g-border-radius-m) var(--g-border-radius-xs)
|
18
|
+
var(--g-border-radius-xs);
|
19
|
+
background-color: var(--code-background-color);
|
20
|
+
}
|
21
|
+
&__section-title-wrapper {
|
22
|
+
padding: var(--g-spacing-half) var(--g-spacing-2) var(--g-spacing-half) var(--g-spacing-3);
|
23
|
+
|
24
|
+
line-height: 28px;
|
25
|
+
|
26
|
+
border-bottom: 1px solid var(--g-color-line-generic);
|
27
|
+
}
|
28
|
+
&__section-content {
|
29
|
+
padding: var(--g-spacing-2) 0 0 0;
|
30
|
+
}
|
31
|
+
&__section-scroll-container {
|
32
|
+
overflow: auto;
|
33
|
+
|
34
|
+
max-height: 60vh;
|
35
|
+
padding: 0 var(--g-spacing-2) var(--g-spacing-3) var(--g-spacing-3);
|
36
|
+
scrollbar-width: thin;
|
37
|
+
scrollbar-color: var(--g-color-line-generic) transparent;
|
38
|
+
}
|
39
|
+
&__message-meta {
|
40
|
+
padding-right: var(--g-spacing-9);
|
41
|
+
}
|
42
|
+
|
43
|
+
&__json-viewer-toolbar {
|
44
|
+
background-color: var(--code-background-color);
|
45
|
+
}
|
46
|
+
|
47
|
+
&__string-message {
|
48
|
+
overflow: hidden;
|
49
|
+
|
50
|
+
white-space: pre-wrap;
|
51
|
+
word-break: break-all;
|
52
|
+
}
|
53
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
interface TopicDataSectionProps {
|
2
|
+
children: React.ReactNode;
|
3
|
+
title: React.ReactNode;
|
4
|
+
className?: string;
|
5
|
+
renderToolbar?: () => React.ReactNode;
|
6
|
+
}
|
7
|
+
export declare function TopicDataSection({ children, title, className, renderToolbar, }: TopicDataSectionProps): import("react/jsx-runtime").JSX.Element;
|
8
|
+
export {};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { Flex } from '@gravity-ui/uikit';
|
3
|
+
import { b } from '../shared';
|
4
|
+
export function TopicDataSection({ children, title, className, renderToolbar, }) {
|
5
|
+
return (_jsxs(Flex, { direction: "column", className: b('section', className), children: [_jsxs(Flex, { className: b('section-title-wrapper'), justifyContent: "space-between", alignItems: "center", children: [title, renderToolbar === null || renderToolbar === void 0 ? void 0 : renderToolbar()] }), _jsx("div", { className: b('section-content'), children: _jsx("div", { className: b('section-scroll-container'), children: children }) })] }));
|
6
|
+
}
|
7
|
+
//# sourceMappingURL=TopicDataSection.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"TopicDataSection.js","sourceRoot":"","sources":["../../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicDataSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAC,CAAC,EAAC,MAAM,WAAW,CAAC;AAS5B,MAAM,UAAU,gBAAgB,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,SAAS,EACT,aAAa,GACO;IACpB,OAAO,CACH,MAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,aACvD,MAAC,IAAI,IACD,SAAS,EAAE,CAAC,CAAC,uBAAuB,CAAC,EACrC,cAAc,EAAC,eAAe,EAC9B,UAAU,EAAC,QAAQ,aAElB,KAAK,EACL,aAAa,aAAb,aAAa,uBAAb,aAAa,EAAI,IACf,EACP,cAAK,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,YAChC,cAAK,SAAS,EAAE,CAAC,CAAC,0BAA0B,CAAC,YAAG,QAAQ,GAAO,GAC7D,IACH,CACV,CAAC;AACN,CAAC"}
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.js
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import React from 'react';
|
3
|
+
import { ArrowDownToLine } from '@gravity-ui/icons';
|
4
|
+
import { ActionTooltip, Button, ClipboardButton, Flex, Icon, Text } from '@gravity-ui/uikit';
|
5
|
+
import { JsonViewer } from '../../../../../../components/JsonViewer/JsonViewer';
|
6
|
+
import { unipikaConvert } from '../../../../../../components/JsonViewer/unipika/unipika';
|
7
|
+
import ShortyString from '../../../../../../components/ShortyString/ShortyString';
|
8
|
+
import { createAndDownloadFile } from '../../../../../../utils/downloadFile';
|
9
|
+
import { useTypedSelector } from '../../../../../../utils/hooks';
|
10
|
+
import { bytesToMB, safeParseNumber } from '../../../../../../utils/utils';
|
11
|
+
import i18n from '../../i18n';
|
12
|
+
import { MESSAGE_SIZE_LIMIT, b } from '../shared';
|
13
|
+
import { TopicDataSection } from './TopicDataSection';
|
14
|
+
const UNIPIKA_MAX_SIZE = 1000000;
|
15
|
+
export function TopicMessage({ offset, size, message }) {
|
16
|
+
const isFullscreen = useTypedSelector((state) => state.fullscreen);
|
17
|
+
const { preparedMessage, decodedMessage, convertedMessage } = React.useMemo(() => {
|
18
|
+
let preparedMessage = message;
|
19
|
+
let decodedMessage = message;
|
20
|
+
try {
|
21
|
+
decodedMessage = atob(message);
|
22
|
+
}
|
23
|
+
catch (e) {
|
24
|
+
console.warn(e);
|
25
|
+
}
|
26
|
+
try {
|
27
|
+
const jsonMessage = JSON.parse(decodedMessage);
|
28
|
+
if (jsonMessage && typeof jsonMessage === 'object') {
|
29
|
+
preparedMessage = jsonMessage;
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
preparedMessage = decodedMessage;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
catch (e) {
|
36
|
+
console.warn(e);
|
37
|
+
}
|
38
|
+
let convertedMessage;
|
39
|
+
if (typeof preparedMessage === 'object' && safeParseNumber(size) <= UNIPIKA_MAX_SIZE) {
|
40
|
+
convertedMessage = unipikaConvert(preparedMessage);
|
41
|
+
}
|
42
|
+
else if (preparedMessage && typeof preparedMessage === 'object') {
|
43
|
+
preparedMessage = JSON.stringify(preparedMessage, null, 2);
|
44
|
+
}
|
45
|
+
return { preparedMessage, decodedMessage, convertedMessage };
|
46
|
+
}, [message, size]);
|
47
|
+
const isJson = Boolean(convertedMessage);
|
48
|
+
const messageContent = isJson ? (_jsx(JsonViewer
|
49
|
+
// key is used to reset JsonViewer state to collapsed due to performance issues on close fullscreen mode if nodes quantity is big enough https://github.com/ydb-platform/ydb-embedded-ui/issues/2265
|
50
|
+
, { collapsedInitially: true, value: convertedMessage, maxValueWidth: 50, toolbarClassName: b('json-viewer-toolbar') }, String(isFullscreen))) : (_jsx("div", { className: b('string-message'), children: _jsx(ShortyString, { value: preparedMessage, limit: 2000 }, String(isFullscreen)) }));
|
51
|
+
const renderToolbar = () => {
|
52
|
+
return (_jsxs(Flex, { gap: 1, children: [_jsx(ActionTooltip, { title: i18n('label_download'), children: _jsx(Button, { view: "flat-secondary", onClick: (e) => {
|
53
|
+
e.stopPropagation();
|
54
|
+
createAndDownloadFile(decodedMessage, `topic-message-${offset !== null && offset !== void 0 ? offset : 'unknown-offset'}`);
|
55
|
+
}, children: _jsx(Icon, { data: ArrowDownToLine }) }) }), _jsx(ClipboardButton, { view: "flat-secondary", text: decodedMessage })] }));
|
56
|
+
};
|
57
|
+
const truncated = safeParseNumber(size) > MESSAGE_SIZE_LIMIT;
|
58
|
+
return (_jsx(TopicDataSection, { title: _jsx(MessageTitle, { truncated: truncated }), renderToolbar: renderToolbar, className: b('message'), children: messageContent }));
|
59
|
+
}
|
60
|
+
function MessageTitle({ truncated }) {
|
61
|
+
return (_jsxs("span", { children: [i18n('label_message'), truncated && (_jsxs(React.Fragment, { children: [' ', _jsxs(Text, { color: "secondary", children: ["[", i18n('label_truncated', {
|
62
|
+
size: bytesToMB(MESSAGE_SIZE_LIMIT),
|
63
|
+
}), "]"] })] }))] }));
|
64
|
+
}
|
65
|
+
//# sourceMappingURL=TopicMessage.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"TopicMessage.js","sourceRoot":"","sources":["../../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type { TopicMessage } from '../../../../../../types/api/topic';
|
2
|
+
interface TopicMessageGeneralInfoProps {
|
3
|
+
messageData: TopicMessage;
|
4
|
+
}
|
5
|
+
export declare function TopicMessageGeneralInfo({ messageData }: TopicMessageGeneralInfoProps): import("react/jsx-runtime").JSX.Element;
|
6
|
+
export {};
|