import { DATE_TIME_FORMAT, DURATION_POLLING_PRESENTATIONS, STATUS_DANGEROUS, STATUS_NORMAL, STATUS_SOS, STATUS_WARNING, } from '@/utils/format'; import { ProList, ProListMetas } from '@ant-design/pro-components'; import { Badge, theme, Typography } from 'antd'; import moment from 'moment'; import { useRef } from 'react'; const getBadgeLevel = (level: number) => { switch (level) { case STATUS_NORMAL: return ; case STATUS_WARNING: return ; case STATUS_DANGEROUS: return ; case STATUS_SOS: return ; default: return ; } }; interface AlarmTableProps { alarmList?: API.Alarm[]; isLoading?: boolean; } export const AlarmTable: React.FC = ({ alarmList, isLoading, }) => { // const intl = useIntl(); const actionRef = useRef(); const { token } = theme.useToken(); // const [messageApi, contextHolder] = message.useMessage(); // const [confirmModalVisible, handleConfirmModalVisible] = useState(false); // const [currentRow, setCurrentRow] = useState({}); const getTitleAlarmColor = (level: number) => { switch (level) { case STATUS_NORMAL: return token.colorSuccess; case STATUS_WARNING: return token.colorWarning; case STATUS_DANGEROUS: return token.colorError; case STATUS_SOS: return token.colorError; default: return token.colorText; } }; const columns: ProListMetas = { title: { dataIndex: 'name', render(_, item) { return ( {item.name} ); }, }, avatar: { render: (_, item) => getBadgeLevel(item.level), }, description: { dataIndex: 'time', render: (_, item) => { return ( <>
{moment.unix(item?.t).format(DATE_TIME_FORMAT)}
); }, }, }; return ( <> bordered actionRef={actionRef} metas={columns} polling={DURATION_POLLING_PRESENTATIONS} loading={isLoading} dataSource={alarmList} search={false} dateFormatter="string" cardProps={{ bodyStyle: { paddingInline: 16, paddingBlock: 8 }, }} /> ); };