import { ArrowLeft, Download, FileText, Grid, Plus, Save, Settings, Wrench } from 'lucide-react'; import { FC, useMemo, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { StandardsSelector } from '../../../../components/StandardsElement/StandardsSelector'; import { Badge } from '../../../../components/ui/badge'; import { Button } from '../../../../components/ui/button'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../../../components/ui/card'; import { Checkbox } from '../../../../components/ui/checkbox'; import { Input } from '../../../../components/ui/input'; import { Label } from '../../../../components/ui/label'; import { RadioGroup, RadioGroupItem } from '../../../../components/ui/radio-group'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../../components/ui/select'; import { Textarea } from '../../../../components/ui/textarea'; import { useTemplateContext } from '../../../../contexts/TemplateContext'; import { Template, TemplateElement } from '../../../../types/template'; // Моковые данные для эталонов (такие же как в StandardsSelector) const mockStandards = [ { id: "1", name: "Эталон массы 1 кг", shortName: "ЭМ-1кг", type: "Масса", registryNumber: "ГРСИ 12345-01", range: "0.5-2 кг", accuracy: "±0.001 г", certificateNumber: "СИ-2024-001", validUntil: "2025-12-31", }, { id: "2", name: "Эталон длины 1 м", shortName: "ЭД-1м", type: "Длина", registryNumber: "ГРСИ 12345-02", range: "0.5-2 м", accuracy: "±0.001 мм", certificateNumber: "СИ-2024-002", validUntil: "2025-06-30", }, { id: "3", name: "Эталон температуры 20°C", shortName: "ЭТ-20°C", type: "Температура", registryNumber: "ГРСИ 12345-03", range: "15-25°C", accuracy: "±0.01°C", certificateNumber: "СИ-2024-003", validUntil: "2025-03-15", }, { id: "4", name: "Эталон давления 1 Па", shortName: "ЭД-1Па", type: "Давление", registryNumber: "ГРСИ 12345-04", range: "0.5-2 Па", accuracy: "±0.001 Па", certificateNumber: "СИ-2024-004", validUntil: "2025-09-20", }, { id: "5", name: "Эталон времени 1 с", shortName: "ЭВ-1с", type: "Время", registryNumber: "ГРСИ 12345-05", range: "0.5-2 с", accuracy: "±0.000001 с", certificateNumber: "СИ-2024-005", validUntil: "2025-12-01", }, ]; // Функция для получения данных эталона по ID const getStandardById = (id: string) => { return mockStandards.find(standard => standard.id === id); }; // Функция для получения типа эталона в сокращенном виде const getStandardTypeBadge = (type: string) => { switch (type) { case "Манометр грузопоршневой": return "МГП"; case "Калибратор давления": return "КД"; default: return "МО"; } }; interface ProtocolFormProps { template: Template; onSave: (data: Record) => void; onBack: () => void; } interface FormElementProps { element: TemplateElement; value: any; onChange: (value: any) => void; } const FormElement: FC = ({ element, value, onChange }) => { const [isStandardsDialogOpen, setIsStandardsDialogOpen] = useState(false); const renderInput = () => { switch (element.type) { case 'text': return ( onChange(e.target.value)} required={element.required} /> ); case 'textarea': return (