ydb-embedded-ui 16.2.0 → 16.3.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/containers/Tenant/Diagnostics/TopicData/TopicData.js +17 -3
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.d.ts +3 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js +21 -5
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.scss +4 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.d.ts +9 -2
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.js +50 -27
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.d.ts +7 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.js +32 -8
- package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/Columns.scss +11 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.d.ts +12 -2
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js +46 -12
- package/dist/containers/Tenant/Diagnostics/TopicData/columns/columns.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js +29 -3
- package/dist/containers/Tenant/Diagnostics/TopicData/getData.js.map +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/i18n/en.json +4 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/i18n/index.d.ts +1 -1
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.d.ts +2 -0
- package/dist/containers/Tenant/Diagnostics/TopicData/utils/types.js.map +1 -1
- package/dist/containers/Tenant/Query/Preview/components/TopicPreview.js +15 -3
- package/dist/containers/Tenant/Query/Preview/components/TopicPreview.js.map +1 -1
- package/dist/containers/Tenant/Query/Preview/components/TopicPreviewTable.d.ts +7 -1
- package/dist/containers/Tenant/Query/Preview/components/TopicPreviewTable.js +38 -31
- package/dist/containers/Tenant/Query/Preview/components/TopicPreviewTable.js.map +1 -1
- package/dist/services/api/meta.d.ts +4 -0
- package/dist/services/api/meta.js +6 -0
- package/dist/services/api/meta.js.map +1 -1
- package/dist/store/reducers/capabilities/hooks.d.ts +3 -1
- package/dist/store/reducers/capabilities/hooks.js +12 -4
- package/dist/store/reducers/capabilities/hooks.js.map +1 -1
- package/dist/store/reducers/topic.d.ts +15 -10
- package/dist/store/reducers/topic.js +9 -3
- package/dist/store/reducers/topic.js.map +1 -1
- package/dist/types/api/capabilities.d.ts +1 -1
- package/dist/types/api/topic.d.ts +35 -2
- package/package.json +4 -3
|
@@ -9,6 +9,8 @@ import { Fullscreen } from '../../../../components/Fullscreen/Fullscreen';
|
|
|
9
9
|
import { DEFAULT_TABLE_ROW_HEIGHT, PAGINATED_TABLE_IDS, ResizeablePaginatedTable, } from '../../../../components/PaginatedTable';
|
|
10
10
|
import { PaginatedTableWithLayout } from '../../../../components/PaginatedTable/PaginatedTableWithLayout';
|
|
11
11
|
import { TableColumnSetup } from '../../../../components/TableColumnSetup/TableColumnSetup';
|
|
12
|
+
import { useSchemaTopicDataAvailable } from '../../../../store/reducers/capabilities/hooks';
|
|
13
|
+
import { useClusterNameFromQuery } from '../../../../utils/hooks/useDatabaseFromQuery';
|
|
12
14
|
import { useSelectedColumns } from '../../../../utils/hooks/useSelectedColumns';
|
|
13
15
|
import { getIllustration } from '../../../../utils/illustrations';
|
|
14
16
|
import { renderPaginatedTableErrorMessage } from '../../../../utils/renderPaginatedTableErrorMessage';
|
|
@@ -28,6 +30,8 @@ import './TopicData.scss';
|
|
|
28
30
|
const columns = getAllColumns();
|
|
29
31
|
export function TopicData({ scrollContainerRef, path, database, databaseFullPath }) {
|
|
30
32
|
const NoSearchResultsImage = getIllustration('NoSearchResults');
|
|
33
|
+
const schemaTopicDataAvailable = useSchemaTopicDataAvailable();
|
|
34
|
+
const clusterName = useClusterNameFromQuery();
|
|
31
35
|
const [controlsKey, setControlsKey] = React.useState(0);
|
|
32
36
|
const [startOffset, setStartOffset] = React.useState();
|
|
33
37
|
const { selectedPartition, selectedOffset, startTimestamp, topicDataFilter, activeOffset, handleSelectedOffsetChange, handleStartTimestampChange, handleSelectedPartitionChange, handleActiveOffsetChange, } = useTopicDataQueryParams();
|
|
@@ -90,10 +94,20 @@ export function TopicData({ scrollContainerRef, path, database, databaseFullPath
|
|
|
90
94
|
const tableFilters = React.useMemo(() => ({
|
|
91
95
|
path,
|
|
92
96
|
database,
|
|
97
|
+
clusterName,
|
|
93
98
|
partition: selectedPartition !== null && selectedPartition !== void 0 ? selectedPartition : '',
|
|
94
99
|
isEmpty: emptyData,
|
|
95
100
|
currentPage,
|
|
96
|
-
|
|
101
|
+
useMeta: schemaTopicDataAvailable,
|
|
102
|
+
}), [
|
|
103
|
+
path,
|
|
104
|
+
database,
|
|
105
|
+
clusterName,
|
|
106
|
+
selectedPartition,
|
|
107
|
+
emptyData,
|
|
108
|
+
currentPage,
|
|
109
|
+
schemaTopicDataAvailable,
|
|
110
|
+
]);
|
|
97
111
|
const getTopicData = React.useMemo(() => generateTopicDataGetter({
|
|
98
112
|
setBoundOffsets,
|
|
99
113
|
baseOffset: pageStartOffset,
|
|
@@ -124,8 +138,8 @@ export function TopicData({ scrollContainerRef, path, database, databaseFullPath
|
|
|
124
138
|
return (_jsx(EmptyFilter, { title: i18n('label_nothing-found'), message: i18n('description_nothing-found'), onShowAll: hasFilters ? resetFilters : undefined, showAll: i18n('action_show-all'), image: _jsx(NoSearchResultsImage, { width: 230, height: 230 }) }));
|
|
125
139
|
};
|
|
126
140
|
const renderDrawerContent = React.useCallback(() => {
|
|
127
|
-
return (_jsx(Fullscreen, { children: _jsx(TopicMessageDetails, { database: database, path: path }) }));
|
|
128
|
-
}, [database, path]);
|
|
141
|
+
return (_jsx(Fullscreen, { children: _jsx(TopicMessageDetails, { database: database, path: path, clusterName: clusterName, useMeta: schemaTopicDataAvailable }) }));
|
|
142
|
+
}, [clusterName, database, path, schemaTopicDataAvailable]);
|
|
129
143
|
const handlePaginationUpdate = React.useCallback((page) => {
|
|
130
144
|
setCurrentPage(page);
|
|
131
145
|
}, [setCurrentPage]);
|
|
@@ -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,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,KAAK,EAAC,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAC,MAAM,gDAAgD,CAAC;AAC3E,OAAO,EAAC,sBAAsB,EAAC,MAAM,sEAAsE,CAAC;AAC5G,OAAO,EAAC,UAAU,EAAC,MAAM,8CAA8C,CAAC;AACxE,OAAO,EACH,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,GAC3B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAC,wBAAwB,EAAC,MAAM,gEAAgE,CAAC;AACxG,OAAO,EAAC,gBAAgB,EAAC,MAAM,0DAA0D,CAAC;AAC1F,OAAO,EAAC,kBAAkB,EAAC,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,gCAAgC,EAAC,MAAM,oDAAoD,CAAC;AACpG,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAC,mBAAmB,EAAC,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,EAC3B,aAAa,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,WAAW,CAAC;AAClD,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACH,yBAAyB,EACzB,+BAA+B,EAC/B,4BAA4B,EAC5B,sBAAsB,EACtB,kCAAkC,EAClC,CAAC,GACJ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,kBAAkB,CAAC;AAS1B,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAEhC,MAAM,UAAU,SAAS,CAAC,EAAC,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAiB;IAC5F,MAAM,oBAAoB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"TopicData.js","sourceRoot":"","sources":["../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicData.tsx"],"names":[],"mappings":"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"}
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import './TopicMessageDetails.scss';
|
|
|
2
2
|
interface TopicMessageDetailsProps {
|
|
3
3
|
database: string;
|
|
4
4
|
path: string;
|
|
5
|
+
clusterName?: string;
|
|
6
|
+
useMeta?: boolean;
|
|
5
7
|
}
|
|
6
|
-
export declare function TopicMessageDetails({ database, path }: TopicMessageDetailsProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare function TopicMessageDetails({ database, path, clusterName, useMeta, }: TopicMessageDetailsProps): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
export {};
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js
CHANGED
|
@@ -15,7 +15,7 @@ import { TopicMessageMetadata } from './components/TopicMessageMetadata';
|
|
|
15
15
|
import { MESSAGE_SIZE_LIMIT, b } from './shared';
|
|
16
16
|
import cryCatIcon from '../../../../../assets/icons/cry-cat.svg';
|
|
17
17
|
import './TopicMessageDetails.scss';
|
|
18
|
-
export function TopicMessageDetails({ database, path }) {
|
|
18
|
+
export function TopicMessageDetails({ database, path, clusterName, useMeta, }) {
|
|
19
19
|
var _a;
|
|
20
20
|
const { selectedPartition, activeOffset } = useTopicDataQueryParams();
|
|
21
21
|
const queryParams = React.useMemo(() => {
|
|
@@ -25,22 +25,28 @@ export function TopicMessageDetails({ database, path }) {
|
|
|
25
25
|
const params = {
|
|
26
26
|
database,
|
|
27
27
|
path,
|
|
28
|
+
clusterName,
|
|
28
29
|
partition: selectedPartition,
|
|
29
30
|
limit: 1,
|
|
30
31
|
message_size_limit: MESSAGE_SIZE_LIMIT,
|
|
32
|
+
useMeta,
|
|
31
33
|
};
|
|
32
34
|
const parsedOffset = safeParseNumber(activeOffset);
|
|
33
35
|
params.offset = parsedOffset;
|
|
34
36
|
params.last_offset = parsedOffset + 1;
|
|
35
37
|
return params;
|
|
36
|
-
}, [selectedPartition, activeOffset, database, path]);
|
|
38
|
+
}, [selectedPartition, activeOffset, database, path, clusterName, useMeta]);
|
|
37
39
|
const { currentData, error, isFetching } = topicApi.useGetTopicDataQuery(queryParams);
|
|
38
40
|
const messageDetails = (_a = currentData === null || currentData === void 0 ? void 0 : currentData.Messages) === null || _a === void 0 ? void 0 : _a[0];
|
|
39
41
|
const renderMessageGeneralInfo = () => {
|
|
40
42
|
if (!messageDetails) {
|
|
41
43
|
return null;
|
|
42
44
|
}
|
|
43
|
-
return _jsx(TopicMessageGeneralInfo, { messageData: messageDetails
|
|
45
|
+
return (_jsx(TopicMessageGeneralInfo, { messageData: messageDetails, schemaInfo: {
|
|
46
|
+
ProtoMessageName: currentData === null || currentData === void 0 ? void 0 : currentData.ProtoMessageName,
|
|
47
|
+
Protoseq: currentData === null || currentData === void 0 ? void 0 : currentData.Protoseq,
|
|
48
|
+
SchemaPath: currentData === null || currentData === void 0 ? void 0 : currentData.SchemaPath,
|
|
49
|
+
} }));
|
|
44
50
|
};
|
|
45
51
|
const renderMessageMeta = () => {
|
|
46
52
|
const metadata = messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.MessageMetadata;
|
|
@@ -51,10 +57,20 @@ export function TopicMessageDetails({ database, path }) {
|
|
|
51
57
|
};
|
|
52
58
|
const renderMessage = () => {
|
|
53
59
|
const message = messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.Message;
|
|
54
|
-
|
|
60
|
+
const generalSchematizeError = currentData === null || currentData === void 0 ? void 0 : currentData.SchematizeError;
|
|
61
|
+
const messageSchematizeError = messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.SchematizeError;
|
|
62
|
+
// A message is schematized (a parsed JSON value, including string
|
|
63
|
+
// primitives) when the response carries schema context (`SchemaPath`)
|
|
64
|
+
// and neither the response nor the message reported a schematization
|
|
65
|
+
// error. Such values must be rendered as-is, without base64 decoding.
|
|
66
|
+
const isSchematized = Boolean(currentData === null || currentData === void 0 ? void 0 : currentData.SchemaPath) && !generalSchematizeError && !messageSchematizeError;
|
|
67
|
+
// Render the section whenever there is a message OR a schematization
|
|
68
|
+
// error to report. Use isNil instead of a broad falsy check so valid
|
|
69
|
+
// falsy schematized values (0, false, '') are not dropped.
|
|
70
|
+
if (isNil(message) && !generalSchematizeError && !messageSchematizeError) {
|
|
55
71
|
return null;
|
|
56
72
|
}
|
|
57
|
-
return (_jsx(TopicMessage, { message: message, offset: messageDetails.Offset, size: messageDetails.OriginalSize }));
|
|
73
|
+
return (_jsx(TopicMessage, { message: message, offset: messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.Offset, size: messageDetails === null || messageDetails === void 0 ? void 0 : messageDetails.OriginalSize, generalSchematizeError: generalSchematizeError, messageSchematizeError: messageSchematizeError, isSchematized: isSchematized }));
|
|
58
74
|
};
|
|
59
75
|
const renderContent = () => {
|
|
60
76
|
var _a;
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopicMessageDetails.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,KAAK,EAAC,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAC,aAAa,EAAC,MAAM,uDAAuD,CAAC;AACpF,OAAO,EAAC,QAAQ,EAAC,MAAM,qCAAqC,CAAC;AAE7D,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,uBAAuB,EAAC,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAC,oBAAoB,EAAC,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAC,kBAAkB,EAAE,CAAC,EAAC,MAAM,UAAU,CAAC;AAE/C,OAAO,UAAU,MAAM,yCAAyC,CAAC;AAEjE,OAAO,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"TopicMessageDetails.js","sourceRoot":"","sources":["../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/TopicMessageDetails.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
interface TopicMessageProps {
|
|
2
|
-
message: string;
|
|
2
|
+
message: string | unknown;
|
|
3
3
|
offset?: string | number;
|
|
4
4
|
size?: number;
|
|
5
|
+
generalSchematizeError?: string;
|
|
6
|
+
messageSchematizeError?: string;
|
|
7
|
+
/**
|
|
8
|
+
* When true the message value is already schematized (including string
|
|
9
|
+
* primitives) and must be rendered as-is without base64 decoding.
|
|
10
|
+
*/
|
|
11
|
+
isSchematized?: boolean;
|
|
5
12
|
}
|
|
6
|
-
export declare function TopicMessage({ offset, size, message }: TopicMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function TopicMessage({ offset, size, message, generalSchematizeError, messageSchematizeError, isSchematized, }: TopicMessageProps): import("react/jsx-runtime").JSX.Element;
|
|
7
14
|
export {};
|
package/dist/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ArrowDownToLine } from '@gravity-ui/icons';
|
|
4
|
-
import { ActionTooltip, Button, ClipboardButton, Flex, Icon, Text } from '@gravity-ui/uikit';
|
|
4
|
+
import { ActionTooltip, Alert, Button, ClipboardButton, Flex, Icon, Text } from '@gravity-ui/uikit';
|
|
5
|
+
import { isNil } from 'lodash';
|
|
5
6
|
import { JsonViewer } from '../../../../../../components/JsonViewer/JsonViewer';
|
|
6
7
|
import ShortyString from '../../../../../../components/ShortyString/ShortyString';
|
|
7
8
|
import { createAndDownloadFile } from '../../../../../../utils/downloadFile';
|
|
@@ -12,36 +13,48 @@ import { MESSAGE_SIZE_LIMIT, b } from '../shared';
|
|
|
12
13
|
import { TopicDataSection } from './TopicDataSection';
|
|
13
14
|
const UNIPIKA_MAX_SIZE = 1000000;
|
|
14
15
|
const utf8Decoder = new TextDecoder('utf-8');
|
|
15
|
-
export function TopicMessage({ offset, size, message }) {
|
|
16
|
+
export function TopicMessage({ offset, size, message, generalSchematizeError, messageSchematizeError, isSchematized, }) {
|
|
16
17
|
const isFullscreen = useTypedSelector((state) => state.fullscreen);
|
|
17
18
|
const sectionScrollRef = React.useRef(null);
|
|
19
|
+
// The message may be absent while a schematization error is still present
|
|
20
|
+
// (error-only rows). In that case we render the alerts but no content/toolbar.
|
|
21
|
+
const hasMessage = !isNil(message);
|
|
18
22
|
const { preparedMessage, decodedMessage, isJson } = React.useMemo(() => {
|
|
23
|
+
// A schematized value is already a parsed JSON value (object/array or a
|
|
24
|
+
// primitive such as a string) and must be used as-is. Only legacy,
|
|
25
|
+
// non-schematized string values are base64-encoded and need decoding.
|
|
26
|
+
// A raw string value alone is ambiguous, so we rely on the
|
|
27
|
+
// `isSchematized` signal derived from the response schema context rather
|
|
28
|
+
// than guessing from the type.
|
|
19
29
|
let preparedMessage = message;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
bytes
|
|
30
|
+
// decodedMessage is always a string, suitable for download/clipboard.
|
|
31
|
+
let decodedMessage = typeof message === 'string' ? message : JSON.stringify(message, null, 2);
|
|
32
|
+
if (typeof message === 'string' && !isSchematized) {
|
|
33
|
+
try {
|
|
34
|
+
const binary = atob(message);
|
|
35
|
+
const bytes = new Uint8Array(binary.length);
|
|
36
|
+
for (let i = 0; i < binary.length; i++) {
|
|
37
|
+
bytes[i] = binary.charCodeAt(i);
|
|
38
|
+
}
|
|
39
|
+
decodedMessage = utf8Decoder.decode(bytes);
|
|
26
40
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
catch (e) {
|
|
30
|
-
console.warn(e);
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
const jsonMessage = JSON.parse(decodedMessage);
|
|
34
|
-
if (jsonMessage && typeof jsonMessage === 'object') {
|
|
35
|
-
preparedMessage = jsonMessage;
|
|
41
|
+
catch (e) {
|
|
42
|
+
console.warn(e);
|
|
36
43
|
}
|
|
37
|
-
|
|
44
|
+
try {
|
|
45
|
+
const jsonMessage = JSON.parse(decodedMessage);
|
|
46
|
+
if (jsonMessage && typeof jsonMessage === 'object') {
|
|
47
|
+
preparedMessage = jsonMessage;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
preparedMessage = decodedMessage;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
38
54
|
preparedMessage = decodedMessage;
|
|
55
|
+
console.warn(e);
|
|
39
56
|
}
|
|
40
57
|
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
preparedMessage = decodedMessage;
|
|
43
|
-
console.warn(e);
|
|
44
|
-
}
|
|
45
58
|
let isJson = false;
|
|
46
59
|
if (typeof preparedMessage === 'object' && safeParseNumber(size) <= UNIPIKA_MAX_SIZE) {
|
|
47
60
|
isJson = true;
|
|
@@ -50,10 +63,20 @@ export function TopicMessage({ offset, size, message }) {
|
|
|
50
63
|
preparedMessage = JSON.stringify(preparedMessage, null, 2);
|
|
51
64
|
}
|
|
52
65
|
return { preparedMessage, decodedMessage, isJson };
|
|
53
|
-
}, [message, size]);
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
66
|
+
}, [message, size, isSchematized]);
|
|
67
|
+
const renderMessageContent = () => {
|
|
68
|
+
if (!hasMessage) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
if (isJson) {
|
|
72
|
+
return (_jsx(JsonViewer
|
|
73
|
+
// 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
|
|
74
|
+
, { collapsedInitially: true, value: preparedMessage, toolbarClassName: b('json-viewer-toolbar'), scrollContainerRef: sectionScrollRef }, String(isFullscreen)));
|
|
75
|
+
}
|
|
76
|
+
return (_jsx("div", { className: b('string-message'), children: _jsx(ShortyString, { value: typeof preparedMessage === 'string'
|
|
77
|
+
? preparedMessage
|
|
78
|
+
: JSON.stringify(preparedMessage), limit: 2000 }, String(isFullscreen)) }));
|
|
79
|
+
};
|
|
57
80
|
const renderToolbar = () => {
|
|
58
81
|
return (_jsxs(Flex, { gap: 1, children: [_jsx(ActionTooltip, { title: i18n('label_download'), children: _jsx(Button, { view: "flat-secondary", onClick: (e) => {
|
|
59
82
|
e.stopPropagation();
|
|
@@ -61,7 +84,7 @@ export function TopicMessage({ offset, size, message }) {
|
|
|
61
84
|
}, children: _jsx(Icon, { data: ArrowDownToLine }) }) }), _jsx(ClipboardButton, { view: "flat-secondary", text: decodedMessage })] }));
|
|
62
85
|
};
|
|
63
86
|
const truncated = safeParseNumber(size) > MESSAGE_SIZE_LIMIT;
|
|
64
|
-
return (
|
|
87
|
+
return (_jsxs(TopicDataSection, { title: _jsx(MessageTitle, { truncated: truncated }), renderToolbar: hasMessage ? renderToolbar : undefined, className: b('message'), scrollContainerRef: sectionScrollRef, children: [generalSchematizeError && (_jsx(Alert, { className: b('schematize-error'), theme: "danger", message: generalSchematizeError })), messageSchematizeError && (_jsx(Alert, { className: b('schematize-error'), theme: "danger", message: messageSchematizeError, view: "outlined" })), renderMessageContent()] }));
|
|
65
88
|
}
|
|
66
89
|
function MessageTitle({ truncated }) {
|
|
67
90
|
return (_jsxs("span", { children: [i18n('label_message'), truncated && (_jsxs(React.Fragment, { children: [' ', _jsxs(Text, { color: "secondary", children: ["[", i18n('label_truncated', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopicMessage.js","sourceRoot":"","sources":["../../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"TopicMessage.js","sourceRoot":"","sources":["../../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { TopicMessage } from '../../../../../../types/api/topic';
|
|
2
|
+
type SchemaInfo = {
|
|
3
|
+
ProtoMessageName?: string;
|
|
4
|
+
Protoseq?: string | number;
|
|
5
|
+
SchemaPath?: string;
|
|
6
|
+
};
|
|
2
7
|
interface TopicMessageGeneralInfoProps {
|
|
3
8
|
messageData: TopicMessage;
|
|
9
|
+
schemaInfo?: SchemaInfo;
|
|
4
10
|
}
|
|
5
|
-
export declare function TopicMessageGeneralInfo({ messageData }: TopicMessageGeneralInfoProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function TopicMessageGeneralInfo({ messageData, schemaInfo }: TopicMessageGeneralInfoProps): import("react/jsx-runtime").JSX.Element;
|
|
6
12
|
export {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { DefinitionList, Flex } from '@gravity-ui/uikit';
|
|
3
|
+
import { isNil } from 'lodash';
|
|
3
4
|
import { formatTimestamp } from '../../../../../../utils/dataFormatters/dataFormatters';
|
|
5
|
+
import i18n from '../../i18n';
|
|
4
6
|
import { TOPIC_DATA_COLUMNS_IDS } from '../../utils/types';
|
|
5
7
|
import { b } from '../shared';
|
|
6
8
|
import { fields } from './fields';
|
|
@@ -29,12 +31,34 @@ const dataGroups = [
|
|
|
29
31
|
{ name: TOPIC_DATA_COLUMNS_IDS.IP, copy: (row) => row.Ip },
|
|
30
32
|
],
|
|
31
33
|
];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
const schemaInfoFields = [
|
|
35
|
+
{ name: 'ProtoMessageName', header: i18n('label_proto-message-name') },
|
|
36
|
+
{ name: 'Protoseq', header: i18n('label_protoseq') },
|
|
37
|
+
{ name: 'SchemaPath', header: i18n('label_schema-path') },
|
|
38
|
+
];
|
|
39
|
+
function renderField(item, messageData) {
|
|
40
|
+
var _a;
|
|
41
|
+
const field = fields.find((f) => f.name === item.name);
|
|
42
|
+
const copyText = (_a = item.copy) === null || _a === void 0 ? void 0 : _a.call(item, messageData);
|
|
43
|
+
return (_jsx(DefinitionList.Item, { name: field === null || field === void 0 ? void 0 : field.header, copyText: copyText, children: field === null || field === void 0 ? void 0 : field.render({ row: messageData }) }, item.name));
|
|
44
|
+
}
|
|
45
|
+
function renderDataGroups(messageData) {
|
|
46
|
+
return dataGroups.map((group, index) => (_jsx(DefinitionList, { className: b('list'), nameMaxWidth: 200, children: group.map((item) => renderField(item, messageData)) }, index)));
|
|
47
|
+
}
|
|
48
|
+
function renderSchemaInfo(schemaInfo) {
|
|
49
|
+
if (!schemaInfo) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const visibleFields = schemaInfoFields.filter(({ name }) => {
|
|
53
|
+
const value = schemaInfo[name];
|
|
54
|
+
return !isNil(value) && String(value).trim() !== '';
|
|
55
|
+
});
|
|
56
|
+
if (!visibleFields.length) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return (_jsx(DefinitionList, { className: b('list'), nameMaxWidth: 200, children: visibleFields.map(({ name, header }) => (_jsx(DefinitionList.Item, { name: header, copyText: String(schemaInfo[name]), children: schemaInfo[name] }, name))) }));
|
|
60
|
+
}
|
|
61
|
+
export function TopicMessageGeneralInfo({ messageData, schemaInfo }) {
|
|
62
|
+
return (_jsxs(Flex, { direction: "column", gap: 3, className: b('details'), children: [renderDataGroups(messageData), renderSchemaInfo(schemaInfo)] }));
|
|
39
63
|
}
|
|
40
64
|
//# sourceMappingURL=TopicMessageGeneralInfo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopicMessageGeneralInfo.js","sourceRoot":"","sources":["../../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,cAAc,EAAE,IAAI,EAAC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"TopicMessageGeneralInfo.js","sourceRoot":"","sources":["../../../../../../../src/containers/Tenant/Diagnostics/TopicData/TopicMessageDetails/components/TopicMessageGeneralInfo.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,17 @@
|
|
|
21
21
|
&__truncated {
|
|
22
22
|
font-style: italic;
|
|
23
23
|
}
|
|
24
|
+
&__message-wrapper {
|
|
25
|
+
display: inline;
|
|
26
|
+
}
|
|
27
|
+
&__schematize-error-icon {
|
|
28
|
+
display: inline-flex;
|
|
29
|
+
|
|
30
|
+
margin-right: var(--g-spacing-1);
|
|
31
|
+
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
vertical-align: text-top;
|
|
34
|
+
}
|
|
24
35
|
&__help {
|
|
25
36
|
white-space: pre-wrap;
|
|
26
37
|
}
|
|
@@ -29,10 +29,20 @@ interface TopicDataTsDiffProps {
|
|
|
29
29
|
}
|
|
30
30
|
export declare function TopicDataTsDiff({ value, baseColor, variant, }: TopicDataTsDiffProps): import("react/jsx-runtime").JSX.Element | "—";
|
|
31
31
|
interface TopicDataMessageProps {
|
|
32
|
-
message?: string;
|
|
32
|
+
message?: string | unknown;
|
|
33
33
|
size?: number;
|
|
34
|
+
messageSchematizeError?: string;
|
|
35
|
+
/**
|
|
36
|
+
* When true the message value is already schematized (including string
|
|
37
|
+
* primitives) and must be rendered as-is without base64 decoding.
|
|
38
|
+
*/
|
|
39
|
+
isSchematized?: boolean;
|
|
34
40
|
}
|
|
35
|
-
|
|
41
|
+
interface SchematizeErrorIconProps {
|
|
42
|
+
error?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function SchematizeErrorIcon({ error }: SchematizeErrorIconProps): import("react/jsx-runtime").JSX.Element | null;
|
|
45
|
+
export declare function TopicDataMessage({ message, size, messageSchematizeError, isSchematized, }: TopicDataMessageProps): import("react/jsx-runtime").JSX.Element | "—";
|
|
36
46
|
interface TopicDataSizeProps {
|
|
37
47
|
size?: number;
|
|
38
48
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { TriangleExclamation } from '@gravity-ui/icons';
|
|
2
|
+
import { CircleExclamationFill, TriangleExclamation } from '@gravity-ui/icons';
|
|
3
3
|
import DataTable from '@gravity-ui/react-data-table';
|
|
4
4
|
import { ActionTooltip, Icon, Popover, Text } from '@gravity-ui/uikit';
|
|
5
5
|
import { isNil } from 'lodash';
|
|
@@ -9,7 +9,7 @@ import { MultilineTableHeader } from '../../../../../components/MultilineTableHe
|
|
|
9
9
|
import { TENANT_DIAGNOSTICS_TABS_IDS } from '../../../../../store/reducers/tenant/constants';
|
|
10
10
|
import { TOPIC_MESSAGE_SIZE_LIMIT } from '../../../../../store/reducers/topic';
|
|
11
11
|
import { cn } from '../../../../../utils/cn';
|
|
12
|
-
import { EMPTY_DATA_PLACEHOLDER } from '../../../../../utils/constants';
|
|
12
|
+
import { EMPTY_DATA_PLACEHOLDER, YDB_POPOVER_CLASS_NAME } from '../../../../../utils/constants';
|
|
13
13
|
import { formatBytes, formatTimestamp } from '../../../../../utils/dataFormatters/dataFormatters';
|
|
14
14
|
import { isModifiedClickEvent } from '../../../../../utils/events';
|
|
15
15
|
import { formatToMs } from '../../../../../utils/timeParsers';
|
|
@@ -70,7 +70,7 @@ export const messageColumn = {
|
|
|
70
70
|
name: TOPIC_DATA_COLUMNS_IDS.MESSAGE,
|
|
71
71
|
header: TOPIC_DATA_COLUMNS_TITLES[TOPIC_DATA_COLUMNS_IDS.MESSAGE],
|
|
72
72
|
align: DataTable.LEFT,
|
|
73
|
-
render: ({ row: { Message, OriginalSize } }) => (_jsx(TopicDataMessage, { message: Message, size: OriginalSize })),
|
|
73
|
+
render: ({ row: { Message, OriginalSize, SchematizeError, isSchematized } }) => (_jsx(TopicDataMessage, { message: Message, size: OriginalSize, messageSchematizeError: SchematizeError, isSchematized: isSchematized })),
|
|
74
74
|
width: 500,
|
|
75
75
|
};
|
|
76
76
|
export const sizeColumn = {
|
|
@@ -187,21 +187,55 @@ export function TopicDataTsDiff({ value, baseColor = 'primary', variant = 'body-
|
|
|
187
187
|
const numericValue = safeParseNumber(value);
|
|
188
188
|
return (_jsx(Text, { variant: variant, color: numericValue >= 100000 ? 'danger' : baseColor, children: formatToMs(numericValue) }));
|
|
189
189
|
}
|
|
190
|
-
export function
|
|
190
|
+
export function SchematizeErrorIcon({ error }) {
|
|
191
|
+
if (!error) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
return (_jsx(Popover, { className: YDB_POPOVER_CLASS_NAME, content: error, children: _jsx(Text, { color: "danger", className: b('schematize-error-icon'), children: _jsx(Icon, { data: CircleExclamationFill }) }) }));
|
|
195
|
+
}
|
|
196
|
+
export function TopicDataMessage({ message, size, messageSchematizeError, isSchematized, }) {
|
|
197
|
+
const errorIcon = _jsx(SchematizeErrorIcon, { error: messageSchematizeError });
|
|
191
198
|
if (isNil(message)) {
|
|
192
|
-
return EMPTY_DATA_PLACEHOLDER;
|
|
199
|
+
return messageSchematizeError ? (_jsxs("span", { className: b('message-wrapper'), children: [errorIcon, EMPTY_DATA_PLACEHOLDER] })) : (EMPTY_DATA_PLACEHOLDER);
|
|
193
200
|
}
|
|
194
|
-
|
|
201
|
+
// A schematized value is already a parsed JSON value (object/array or a
|
|
202
|
+
// primitive such as a string) and must be rendered as-is. Only legacy,
|
|
203
|
+
// non-schematized string values are base64-encoded and need decoding. A raw
|
|
204
|
+
// string value alone is ambiguous, so we rely on the `isSchematized` signal
|
|
205
|
+
// derived from the response schema context rather than guessing from the type.
|
|
206
|
+
let messageToRender;
|
|
195
207
|
let invalid = false;
|
|
196
|
-
|
|
197
|
-
|
|
208
|
+
if (typeof message === 'string') {
|
|
209
|
+
if (isSchematized) {
|
|
210
|
+
messageToRender = message;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
messageToRender = message;
|
|
214
|
+
try {
|
|
215
|
+
messageToRender = atob(message);
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
console.warn(e);
|
|
219
|
+
messageToRender = i18n('description_failed-decode');
|
|
220
|
+
invalid = true;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
198
223
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
224
|
+
else {
|
|
225
|
+
try {
|
|
226
|
+
messageToRender = JSON.stringify(message);
|
|
227
|
+
}
|
|
228
|
+
catch (e) {
|
|
229
|
+
console.warn(e);
|
|
230
|
+
messageToRender = String(message);
|
|
231
|
+
}
|
|
202
232
|
}
|
|
203
233
|
const truncated = safeParseNumber(size) > TOPIC_MESSAGE_SIZE_LIMIT;
|
|
204
|
-
|
|
234
|
+
let title = messageToRender;
|
|
235
|
+
if (truncated) {
|
|
236
|
+
title += ` ${i18n('description_truncated')}`;
|
|
237
|
+
}
|
|
238
|
+
return (_jsxs("span", { className: b('message-wrapper'), children: [errorIcon, _jsxs(Text, { variant: "body-2", color: invalid ? 'secondary' : 'primary', className: b('message', { invalid }), title: title, children: [messageToRender, truncated && (_jsxs(Text, { color: "secondary", className: b('truncated'), children: [' ', i18n('description_truncated')] }))] })] }));
|
|
205
239
|
}
|
|
206
240
|
export function TopicDataSize({ size }) {
|
|
207
241
|
return formatBytes(size);
|