import { blue, orange } from '@ant-design/colors'; import { Input, Table } from 'antd'; import AddToQueryHOC from 'components/Logs/AddToQueryHOC'; import CopyClipboardHOC from 'components/Logs/CopyClipboardHOC'; import flatten from 'flat'; import { fieldSearchFilter } from 'lib/logs/fieldSearch'; import React, { useMemo, useState } from 'react'; import { ILog } from 'types/api/logs/log'; import ActionItem from './ActionItem'; // Fields which should be restricted from adding it to query const RESTRICTED_FIELDS = ['timestamp']; interface TableViewProps { logData: ILog; } function TableView({ logData }: TableViewProps): JSX.Element | null { const [fieldSearchInput, setFieldSearchInput] = useState(''); const flattenLogData: Record | null = useMemo( () => (logData ? flatten(logData) : null), [logData], ); if (logData === null) { return null; } const dataSource = flattenLogData !== null && Object.keys(flattenLogData) .filter((field) => fieldSearchFilter(field, fieldSearchInput)) .map((key) => { return { key, field: key, value: JSON.stringify(flattenLogData[key]), }; }); if (!dataSource) { return null; } const columns = [ { title: 'Action', width: 75, render: (fieldData: Record): JSX.Element | null => { const fieldKey = fieldData.field.split('.').slice(-1); if (!RESTRICTED_FIELDS.includes(fieldKey[0])) { return ; } return null; }, }, { title: 'Field', dataIndex: 'field', key: 'field', width: '35%', render: (field: string): JSX.Element => { const fieldKey = field.split('.').slice(-1); const renderedField = {field}; if (!RESTRICTED_FIELDS.includes(fieldKey[0])) { return ( {' '} {renderedField} ); } return renderedField; }, }, { title: 'Value', dataIndex: 'value', key: 'value', ellipsis: false, render: (field: never): JSX.Element => ( {field} ), width: '60%', }, ]; return (
setFieldSearchInput(e.target.value)} /> ); } export default TableView;