Skip to content

Commit eef6107

Browse files
committed
linter warnings fix
1 parent d841a95 commit eef6107

File tree

1 file changed

+69
-48
lines changed

1 file changed

+69
-48
lines changed

frontend/src/components/Topics/Topic/Messages/MessagesTable.tsx

Lines changed: 69 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import PageLoader from 'components/common/PageLoader/PageLoader';
2-
import { Table } from 'components/common/table/Table/Table.styled';
3-
import TableHeaderCell from 'components/common/table/TableHeaderCell/TableHeaderCell';
4-
import { TopicMessage } from 'generated-sources';
5-
import React, { useState, useMemo } from 'react';
6-
import { format } from 'date-fns';
7-
import { Button } from 'components/common/Button/Button';
8-
import * as S from 'components/common/NewTable/Table.styled';
9-
import { usePaginateTopics, useIsLiveMode } from 'lib/hooks/useMessagesFilters';
10-
import { useMessageFiltersStore } from 'lib/hooks/useMessageFiltersStore';
11-
import useDataSaver from 'lib/hooks/useDataSaver';
12-
import Select, { SelectOption } from 'components/common/Select/Select';
13-
14-
import PreviewModal from './PreviewModal';
15-
import Message, { PreviewFilter } from './Message';
1+
import PageLoader from "components/common/PageLoader/PageLoader";
2+
import { Table } from "components/common/table/Table/Table.styled";
3+
import TableHeaderCell from "components/common/table/TableHeaderCell/TableHeaderCell";
4+
import { TopicMessage } from "generated-sources";
5+
import React, { useState, useMemo } from "react";
6+
import { format } from "date-fns";
7+
import { Button } from "components/common/Button/Button";
8+
import * as S from "components/common/NewTable/Table.styled";
9+
import { usePaginateTopics, useIsLiveMode } from "lib/hooks/useMessagesFilters";
10+
import { useMessageFiltersStore } from "lib/hooks/useMessageFiltersStore";
11+
import useDataSaver from "lib/hooks/useDataSaver";
12+
import Select, { SelectOption } from "components/common/Select/Select";
13+
14+
import PreviewModal from "./PreviewModal";
15+
import Message, { PreviewFilter } from "./Message";
1616

1717
export interface MessagesTableProps {
1818
messages: TopicMessage[];
@@ -24,20 +24,19 @@ interface MessageData {
2424
Offset: number;
2525
Key: string | undefined;
2626
Partition: number;
27-
Headers: { [key: string]: string | undefined; } | undefined;
27+
Headers: { [key: string]: string | undefined } | undefined;
2828
Timestamp: Date;
2929
}
3030

31-
type DownloadFormat = 'json' | 'csv';
31+
type DownloadFormat = "json" | "csv";
3232

3333
function padCurrentDateTimeString(): string {
3434
const now: Date = new Date();
35-
const dateTimeString:string = format(now, 'yyyy-MM-dd HH:mm:ss');
35+
const dateTimeString: string = format(now, "yyyy-MM-dd HH:mm:ss");
3636

3737
return `_${dateTimeString}`;
3838
}
3939

40-
4140
const MessagesTable: React.FC<MessagesTableProps> = ({
4241
messages,
4342
isFetching,
@@ -50,16 +49,16 @@ const MessagesTable: React.FC<MessagesTableProps> = ({
5049
const nextCursor = useMessageFiltersStore((state) => state.nextCursor);
5150
const isLive = useIsLiveMode();
5251

53-
const [selectedFormat, setSelectedFormat] = useState<DownloadFormat>('json');
52+
const [selectedFormat, setSelectedFormat] = useState<DownloadFormat>("json");
5453

5554
const formatOptions: SelectOption<DownloadFormat>[] = [
56-
{ label: 'JSON', value: 'json' },
57-
{ label: 'CSV', value: 'csv' }
55+
{ label: "JSON", value: "json" },
56+
{ label: "CSV", value: "csv" },
5857
];
5958

6059
const baseFileName = `topic-messages${padCurrentDateTimeString()}`;
6160

62-
const savedMessagesJson: MessageData[] = messages.map(message => ({
61+
const savedMessagesJson: MessageData[] = messages.map((message) => ({
6362
Value: message.content,
6463
Offset: message.offset,
6564
Key: message.key,
@@ -70,47 +69,68 @@ const MessagesTable: React.FC<MessagesTableProps> = ({
7069

7170
const convertToCSV = useMemo(() => {
7271
return (messagesData: MessageData[]) => {
73-
const headers = ['Value', 'Offset', 'Key', 'Partition', 'Headers', 'Timestamp'] as const;
74-
const rows = messagesData.map(msg =>
75-
headers.map(header => {
76-
const value = msg[header];
77-
if (header === 'Headers') {
78-
return JSON.stringify(value || {});
79-
}
80-
return String(value ?? '');
81-
}).join(',')
72+
const headers = [
73+
"Value",
74+
"Offset",
75+
"Key",
76+
"Partition",
77+
"Headers",
78+
"Timestamp",
79+
] as const;
80+
const rows = messagesData.map((msg) =>
81+
headers
82+
.map((header) => {
83+
const value = msg[header];
84+
if (header === "Headers") {
85+
return JSON.stringify(value || {});
86+
}
87+
return String(value ?? "");
88+
})
89+
.join(","),
8290
);
83-
return [headers.join(','), ...rows].join('\n');
91+
return [headers.join(","), ...rows].join("\n");
8492
};
8593
}, []);
8694

87-
const jsonSaver = useDataSaver(`${baseFileName}.json`, JSON.stringify(savedMessagesJson, null, '\t'));
88-
const csvSaver = useDataSaver(`${baseFileName}.csv`, convertToCSV(savedMessagesJson));
89-
95+
const jsonSaver = useDataSaver(
96+
`${baseFileName}.json`,
97+
JSON.stringify(savedMessagesJson, null, "\t"),
98+
);
99+
const csvSaver = useDataSaver(
100+
`${baseFileName}.csv`,
101+
convertToCSV(savedMessagesJson),
102+
);
90103

91104
const handleFormatSelect = (downloadFormat: DownloadFormat) => {
92105
setSelectedFormat(downloadFormat);
93106
};
94107

95108
const handleDownload = () => {
96-
if (selectedFormat === 'json') {
109+
if (selectedFormat === "json") {
97110
jsonSaver.saveFile();
98111
} else {
99112
csvSaver.saveFile();
100113
}
101114
};
102115

103116
return (
104-
<div style={{ position: 'relative' }}>
105-
<div style={{ display: 'flex', gap: '8px', marginLeft: '1rem', marginBottom: '1rem' }}>
117+
<div style={{ position: "relative" }}>
118+
<div
119+
style={{
120+
display: "flex",
121+
gap: "8px",
122+
marginLeft: "1rem",
123+
marginBottom: "1rem",
124+
}}
125+
>
106126
<Select<DownloadFormat>
107127
id="download-format"
108128
name="download-format"
109129
onChange={handleFormatSelect}
110130
options={formatOptions}
111131
value={selectedFormat}
112-
minWidth="70px"
113-
selectSize="M"
132+
minWidth="70px"
133+
selectSize="M"
114134
placeholder="Select format to download"
115135
disabled={isFetching || messages.length === 0}
116136
/>
@@ -126,10 +146,10 @@ const MessagesTable: React.FC<MessagesTableProps> = ({
126146

127147
{previewFor !== null && (
128148
<PreviewModal
129-
values={previewFor === 'key' ? keyFilters : contentFilters}
149+
values={previewFor === "key" ? keyFilters : contentFilters}
130150
toggleIsOpen={() => setPreviewFor(null)}
131151
setFilters={(payload: PreviewFilter[]) =>
132-
previewFor === 'key'
152+
previewFor === "key"
133153
? setKeyFilters(payload)
134154
: setContentFilters(payload)
135155
}
@@ -145,18 +165,18 @@ const MessagesTable: React.FC<MessagesTableProps> = ({
145165
<TableHeaderCell
146166
title="Key"
147167
previewText={`Preview ${
148-
keyFilters.length ? `(${keyFilters.length} selected)` : ''
168+
keyFilters.length ? `(${keyFilters.length} selected)` : ""
149169
}`}
150-
onPreview={() => setPreviewFor('key')}
170+
onPreview={() => setPreviewFor("key")}
151171
/>
152172
<TableHeaderCell
153173
title="Value"
154174
previewText={`Preview ${
155175
contentFilters.length
156176
? `(${contentFilters.length} selected)`
157-
: ''
177+
: ""
158178
}`}
159-
onPreview={() => setPreviewFor('content')}
179+
onPreview={() => setPreviewFor("content")}
160180
/>
161181
<TableHeaderCell> </TableHeaderCell>
162182
</tr>
@@ -169,7 +189,7 @@ const MessagesTable: React.FC<MessagesTableProps> = ({
169189
message.timestamp,
170190
message.key,
171191
message.partition,
172-
].join('-')}
192+
].join("-")}
173193
message={message}
174194
keyFilters={keyFilters}
175195
contentFilters={contentFilters}
@@ -206,3 +226,4 @@ const MessagesTable: React.FC<MessagesTableProps> = ({
206226
};
207227

208228
export default MessagesTable;
229+

0 commit comments

Comments
 (0)