added route preview

This commit is contained in:
2025-04-15 21:12:43 +03:00
parent b6449b02c0
commit 4dd149f2af
193 changed files with 3568 additions and 1692 deletions

View File

@ -130,12 +130,27 @@ export const RouteEdit = () => {
(Прямой / Обратный)
</Typography>
<Controller
name="path"
control={control}
defaultValue={[]}
rules={{
<TextField
{...register("path", {
required: "Это поле является обязательным",
setValueAs: (value: string) => {
try {
// Разбиваем строку на строки и парсим каждую строку как пару координат
const lines = value.trim().split("\n");
return lines.map((line) => {
const [lat, lon] = line
.trim()
.split(/[\s,]+/)
.map(Number);
if (isNaN(lat) || isNaN(lon)) {
throw new Error("Invalid coordinates");
}
return [lat, lon];
});
} catch {
return [];
}
},
validate: (value: unknown) => {
if (!Array.isArray(value)) return "Неверный формат";
if (value.length === 0)
@ -159,49 +174,22 @@ export const RouteEdit = () => {
}
return true;
},
}}
render={({ field, fieldState: { error } }) => (
<TextField
{...field}
value={
Array.isArray(field.value)
? field.value.map((point) => point.join(" ")).join("\n")
: ""
}
onChange={(e) => {
try {
const lines = e.target.value.trim().split("\n");
const parsed = lines.map((line) => {
const [lat, lon] = line
.trim()
.split(/[\s,]+/)
.map(Number);
if (isNaN(lat) || isNaN(lon)) {
throw new Error("Invalid coordinates");
}
return [lat, lon];
});
field.onChange(parsed);
} catch {
field.onChange([]);
}
}}
error={!!error}
helperText={error?.message}
margin="normal"
fullWidth
InputLabelProps={{ shrink: true }}
type="text"
label={"Координаты маршрута *"}
placeholder="55.7558 37.6173
})}
error={!!(errors as any)?.path}
helperText={(errors as any)?.path?.message}
margin="normal"
fullWidth
InputLabelProps={{ shrink: true }}
type="text"
label={"Координаты маршрута *"}
name="path"
placeholder="55.7558 37.6173
55.7539 37.6208"
multiline
rows={4}
sx={{
marginBottom: 2,
}}
/>
)}
multiline
rows={4}
sx={{
marginBottom: 2,
}}
/>
<TextField