import { useEffect, useState } from "react"; import type { RequestAtPoint } from "../tgu-map-2d/Tgu2DMapRequestsPanel"; import { formatLocalDateTime, parseLocal } from "../../utils/localTime"; type Props = { requests: RequestAtPoint[]; selectedPolygonId?: string; deleting: boolean; deleteError?: string; onHover: (polygonId: string | undefined) => void; onSelect: (polygonId: string) => void; onDelete: (requestId: string) => void; onClose: () => void; }; export function RequestDetailsPanel({ requests, selectedPolygonId, deleting, deleteError, onHover, onSelect, onDelete, onClose }: Props) { const selectedEntry = selectedPolygonId ? requests.find((r) => r.polygon.id === selectedPolygonId) : requests.length === 1 ? requests[0] : undefined; // Второй шаг подтверждения удаления. Сбрасываем при смене выбранной заявки, // чтобы открытый запрос на удаление не «переезжал» на другую заявку. const [confirmingDelete, setConfirmingDelete] = useState(false); useEffect(() => { setConfirmingDelete(false); }, [selectedEntry?.item.id]); return ( ); } function formatDateTime(value: string): string { return formatLocalDateTime(parseLocal(value)); } function surveyTypeLabel(surveyType: string): string { switch (surveyType) { case "OPTICS": return "Оптическая"; case "RSA": return "Радиолокационная (РСА)"; case "COMBINED": return "Комбинированная"; default: return surveyType; } }