import {Autocomplete, Box, TextField, FormControlLabel, Checkbox, Typography} from '@mui/material' import {Create, useAutocomplete} from '@refinedev/mui' import {useForm} from '@refinedev/react-hook-form' import {Controller} from 'react-hook-form' export const RouteCreate = () => { const { saveButtonProps, refineCore: {formLoading}, register, control, formState: {errors}, } = useForm({ refineCoreProps: { resource: 'route/', }, }) const {autocompleteProps: carrierAutocompleteProps} = useAutocomplete({ resource: 'carrier', onSearch: (value) => [ { field: 'short_name', operator: 'contains', value, }, ], }) return ( ( option.id === field.value) || null} onChange={(_, value) => { field.onChange(value?.id || '') }} getOptionLabel={(item) => { return item ? item.short_name : '' }} isOptionEqualToValue={(option, value) => { return option.id === value?.id }} filterOptions={(options, {inputValue}) => { return options.filter((option) => option.short_name.toLowerCase().includes(inputValue.toLowerCase())) }} renderInput={(params) => } /> )} /> String(value), })} error={!!(errors as any)?.route_number} helperText={(errors as any)?.route_number?.message} margin="normal" fullWidth InputLabelProps={{shrink: true}} type="text" label={'Номер маршрута *'} name="route_number" /> field.onChange(e.target.checked)} />} />} /> (Прямой / Обратный) { try { // Парсим строку в массив массивов return JSON.parse(value) } catch { return [] } }, validate: (value: unknown) => { if (!Array.isArray(value)) return 'Неверный формат' if (!value.every((point: unknown) => Array.isArray(point) && point.length === 2)) { return 'Каждая точка должна быть массивом из двух координат' } if (!value.every((point: unknown[]) => point.every((coord: unknown) => !isNaN(Number(coord)) && typeof coord === 'number'))) { return 'Координаты должны быть числами' } return true }, })} error={!!(errors as any)?.path} helperText={(errors as any)?.path?.message} // 'Формат: [[lat1,lon1], [lat2,lon2], ...]' margin="normal" fullWidth InputLabelProps={{shrink: true}} type="text" label={'Координаты маршрута *'} name="path" placeholder="[[1.1, 2.2], [2.1, 4.5]]" /> ) }