import { TaskExecutorHeartbeatItem } from '@/interfaces/database/user-setting'; import { Divider, Flex } from 'antd'; import { Bar, BarChart, CartesianGrid, Legend, Rectangle, ResponsiveContainer, Tooltip, XAxis, } from 'recharts'; import { formatDate, formatTime } from '@/utils/date'; import dayjs from 'dayjs'; import { get } from 'lodash'; import JsonView from 'react18-json-view'; import 'react18-json-view/src/style.css'; import styles from './index.less'; interface IProps { data: Record; } const CustomTooltip = ({ active, payload, ...restProps }: any) => { if (active && payload && payload.length) { const taskExecutorHeartbeatItem: TaskExecutorHeartbeatItem = get( payload, '0.payload', {}, ); return (
{formatDate(restProps.label)}
); } return null; }; const TaskBarChat = ({ data }: IProps) => { return Object.entries(data).map(([key, val]) => { const data = val.map((x) => ({ ...x, now: dayjs(x.now).valueOf(), })); const firstItem = data[0]; const lastItem = data[data.length - 1]; const domain = [firstItem?.now, lastItem?.now]; return (
ID: {key} Lag: {lastItem?.lag} Pending: {lastItem?.pending}
formatTime(x)} allowDataOverflow angle={60} padding={{ left: 20, right: 20 }} tickMargin={20} /> } trigger="click" /> } /> } />
); }); }; export default TaskBarChat;