2023-06-23 10:15:09 +03:00
|
|
|
import type { ColumnsType } from 'antd/es/table';
|
|
|
|
|
import { ResizeTable } from 'components/ResizeTable';
|
|
|
|
|
import dayjs from 'dayjs';
|
|
|
|
|
import {
|
|
|
|
|
createTableColumnsFromQuery,
|
|
|
|
|
RowData,
|
|
|
|
|
} from 'lib/query/createTableColumnsFromQuery';
|
|
|
|
|
import { useMemo } from 'react';
|
|
|
|
|
|
|
|
|
|
import { QueryTableProps } from './QueryTable.intefaces';
|
|
|
|
|
|
|
|
|
|
export function QueryTable({
|
|
|
|
|
queryTableData,
|
|
|
|
|
query,
|
|
|
|
|
renderActionCell,
|
2023-07-04 08:24:34 +03:00
|
|
|
modifyColumns,
|
2023-06-23 10:15:09 +03:00
|
|
|
...props
|
|
|
|
|
}: QueryTableProps): JSX.Element {
|
|
|
|
|
const { columns, dataSource } = useMemo(
|
|
|
|
|
() =>
|
|
|
|
|
createTableColumnsFromQuery({
|
|
|
|
|
query,
|
|
|
|
|
queryTableData,
|
|
|
|
|
renderActionCell,
|
|
|
|
|
}),
|
|
|
|
|
[query, queryTableData, renderActionCell],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const modifiedColumns = useMemo(() => {
|
|
|
|
|
const currentColumns: ColumnsType<RowData> = columns.map((column) =>
|
|
|
|
|
column.key === 'timestamp'
|
|
|
|
|
? {
|
|
|
|
|
...column,
|
|
|
|
|
render: (_, record): string =>
|
|
|
|
|
dayjs(new Date(record.timestamp)).format('MMM DD, YYYY, HH:mm:ss'),
|
|
|
|
|
}
|
|
|
|
|
: column,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return currentColumns;
|
|
|
|
|
}, [columns]);
|
|
|
|
|
|
2023-07-04 08:24:34 +03:00
|
|
|
const tableColumns = modifyColumns
|
|
|
|
|
? modifyColumns(modifiedColumns)
|
|
|
|
|
: modifiedColumns;
|
|
|
|
|
|
2023-06-23 10:15:09 +03:00
|
|
|
return (
|
|
|
|
|
<ResizeTable
|
2023-07-04 08:24:34 +03:00
|
|
|
columns={tableColumns}
|
2023-06-23 10:15:09 +03:00
|
|
|
tableLayout="fixed"
|
|
|
|
|
dataSource={dataSource}
|
|
|
|
|
scroll={{ x: true }}
|
|
|
|
|
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
|
|
|
{...props}
|
|
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
}
|