import React, { useState, useMemo } from 'react' import * as statusColors from '../../lib/statusColors' interface AlertItem { id: number type: string message: string timestamp: string acknowledged: boolean priority: string detector_id?: string detector_name?: string location?: string object?: string } interface AlertsListProps { alerts: AlertItem[] onAcknowledgeToggle: (alertId: number) => void initialSearchTerm?: string } const AlertsList: React.FC = ({ alerts, onAcknowledgeToggle, initialSearchTerm = '' }) => { const [searchTerm, setSearchTerm] = useState(initialSearchTerm) const filteredAlerts = useMemo(() => { return alerts.filter(alert => { const matchesSearch = searchTerm === '' || alert.detector_id?.toString() === searchTerm return matchesSearch }) }, [alerts, searchTerm]) const interSemiboldStyle = { fontFamily: 'Inter, sans-serif', fontWeight: 600 } const interRegularStyle = { fontFamily: 'Inter, sans-serif', fontWeight: 400 } const getStatusColor = (type: string) => { switch (type) { case 'critical': return statusColors.STATUS_COLOR_CRITICAL case 'warning': return statusColors.STATUS_COLOR_WARNING case 'info': return statusColors.STATUS_COLOR_NORMAL default: return statusColors.STATUS_COLOR_UNKNOWN } } return (
{/* Поиск */}
setSearchTerm(e.target.value)} className="bg-[#161824] text-white placeholder-gray-400 px-4 py-2 rounded-lg border border-gray-600 focus:border-blue-500 focus:outline-none w-64" />
{/* Таблица алертов */}

История тревог

Всего: {filteredAlerts.length}
{filteredAlerts.map((item) => ( ))} {filteredAlerts.length === 0 && ( )}
Детектор Статус Сообщение Местоположение Приоритет Подтверждено Время
{item.detector_name || 'Детектор'}
{item.detector_id ? (
ID: {item.detector_id}
) : null}
{item.type === 'critical' ? 'Критический' : item.type === 'warning' ? 'Предупреждение' : 'Информация'}
{item.message} {item.location || '-'} {item.priority === 'high' ? 'Высокий' : item.priority === 'medium' ? 'Средний' : 'Низкий'} {item.acknowledged ? 'Да' : 'Нет'} {new Date(item.timestamp).toLocaleString('ru-RU')}
Записей не найдено
) } export default AlertsList