From 32a7cb44d147c99222371bae54f9ee1945933530 Mon Sep 17 00:00:00 2001 From: itoshi Date: Sun, 15 Jun 2025 20:38:48 +0300 Subject: [PATCH] fix: Hot bug fix --- src/app/router/index.tsx | 2 +- src/pages/Carrier/CarrierCreatePage/index.tsx | 102 +++++++--- src/pages/Carrier/CarrierEditPage/index.tsx | 14 +- src/pages/Carrier/CarrierListPage/index.tsx | 13 +- src/pages/City/CityCreatePage/index.tsx | 30 +-- src/pages/City/CityEditPage/index.tsx | 29 ++- src/pages/City/CityListPage/index.tsx | 42 +++- src/pages/Country/CountryListPage/index.tsx | 45 ++++- src/pages/MapPage/index.tsx | 82 +++++--- src/pages/Route/RouteCreatePage/index.tsx | 88 +++++++- src/pages/Route/RouteEditPage/index.tsx | 95 ++++++++- src/pages/Route/RouteListPage/index.tsx | 19 +- src/pages/Station/StationCreatePage/index.tsx | 162 ++++++++++++--- src/pages/Station/StationEditPage/index.tsx | 45 ++++- .../Station/StationPreviewPage/index.tsx | 2 +- src/shared/const/index.ts | 2 +- .../modals/PreviewMediaDialog/index.tsx | 4 +- src/shared/modals/SelectMediaDialog/index.tsx | 9 +- src/shared/modals/UploadMediaDialog/index.tsx | 2 +- src/shared/store/CarrierStore/index.tsx | 130 ++++++++---- src/shared/store/CityStore/index.ts | 29 ++- src/shared/store/CountryStore/index.ts | 12 +- src/shared/store/StationsStore/index.ts | 190 +++++++++++++++--- src/widgets/ImageUploadCard/index.tsx | 2 +- 24 files changed, 900 insertions(+), 250 deletions(-) diff --git a/src/app/router/index.tsx b/src/app/router/index.tsx index f850029..b8d2948 100644 --- a/src/app/router/index.tsx +++ b/src/app/router/index.tsx @@ -139,7 +139,7 @@ const router = createBrowserRouter([ // City { path: "city", element: }, { path: "city/create", element: }, - { path: "city/:id", element: }, + // { path: "city/:id", element: }, { path: "city/:id/edit", element: }, // Route { path: "route", element: }, diff --git a/src/pages/Carrier/CarrierCreatePage/index.tsx b/src/pages/Carrier/CarrierCreatePage/index.tsx index 3f0d758..06a8f92 100644 --- a/src/pages/Carrier/CarrierCreatePage/index.tsx +++ b/src/pages/Carrier/CarrierCreatePage/index.tsx @@ -12,7 +12,7 @@ import { ArrowLeft, Save } from "lucide-react"; import { Loader2 } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; -import { carrierStore, cityStore, mediaStore } from "@shared"; +import { carrierStore, cityStore, mediaStore, languageStore } from "@shared"; import { useState, useEffect } from "react"; import { ImageUploadCard, LanguageSwitcher } from "@widgets"; import { @@ -23,11 +23,8 @@ import { export const CarrierCreatePage = observer(() => { const navigate = useNavigate(); - - const [fullName, setFullName] = useState(""); - const [shortName, setShortName] = useState(""); - const [cityId, setCityId] = useState(null); - const [slogan, setSlogan] = useState(""); + const { createCarrierData, setCreateCarrierData } = carrierStore; + const { language } = languageStore; const [selectedMediaId, setSelectedMediaId] = useState(null); const [isLoading, setIsLoading] = useState(false); const [isSelectMediaOpen, setIsSelectMediaOpen] = useState(false); @@ -35,7 +32,7 @@ export const CarrierCreatePage = observer(() => { const [isPreviewMediaOpen, setIsPreviewMediaOpen] = useState(false); const [mediaId, setMediaId] = useState(""); const [activeMenuType, setActiveMenuType] = useState< - "thumbnail" | "watermark_lu" | "watermark_rd" | null + "thumbnail" | "watermark_lu" | "watermark_rd" | "image" | null >(null); useEffect(() => { @@ -46,13 +43,7 @@ export const CarrierCreatePage = observer(() => { const handleCreate = async () => { try { setIsLoading(true); - await carrierStore.createCarrier( - fullName, - shortName, - cityId!, - slogan, - selectedMediaId! - ); + await carrierStore.createCarrier(); toast.success("Перевозчик успешно создан"); navigate("/carrier"); } catch (error) { @@ -69,6 +60,14 @@ export const CarrierCreatePage = observer(() => { media_type: number; }) => { setSelectedMediaId(media.id); + setCreateCarrierData( + createCarrierData[language].full_name, + createCarrierData[language].short_name, + createCarrierData.city_id, + createCarrierData[language].slogan, + media.id, + language + ); }; const selectedMedia = selectedMediaId @@ -89,19 +88,28 @@ export const CarrierCreatePage = observer(() => {
-
+

Создание перевозчика

Город setDirection(e.target.value)} - required + labelId="direction-label" + value={createStationData.common.direction ? "Прямой" : "Обратный"} + label="Прямой/обратный маршрут" + onChange={(e) => + setCreateCommonData({ + direction: e.target.value === "Прямой", + }) + } > - Прямое - Обратное + Прямой + Обратный + + + + + setLanguageCreateStationData(language, { + description: e.target.value, + }) + } + /> + + + setLanguageCreateStationData(language, { + address: e.target.value, + }) + } + /> + + { + const newValue = e.target.value; + setCoordinates(newValue); + + const input = newValue.replace(/,/g, " ").trim(); + const [latStr, lonStr] = input.split(/\s+/); + + const lat = parseFloat(latStr); + const lon = parseFloat(lonStr); + + const isValidLat = !isNaN(lat); + const isValidLon = !isNaN(lon); + + if (isValidLat && isValidLon) { + setCreateCommonData({ + latitude: lat, + longitude: lon, + }); + } else { + setCreateCommonData({ + latitude: 0, + longitude: 0, + }); + } + }} + placeholder="Введите координаты в формате: широта долгота (можно использовать запятые или пробелы)" + /> + + + Город +
-
+

{editStationData.ru.name}

{ { - const [latitude, longitude] = e.target.value.split(" ").map(Number); - if (!isNaN(latitude) && !isNaN(longitude)) { + const newValue = e.target.value; + setCoordinates(newValue); + + const input = newValue.replace(/,/g, " ").trim(); + const [latStr, lonStr] = input.split(/\s+/); + + const lat = parseFloat(latStr); + const lon = parseFloat(lonStr); + + const isValidLat = !isNaN(lat); + const isValidLon = !isNaN(lon); + + if (isValidLat && isValidLon) { setEditCommonData({ - latitude: latitude, - longitude: longitude, + latitude: lat, + longitude: lon, + }); + } else { + setEditCommonData({ + latitude: 0, + longitude: 0, }); } }} + placeholder="Введите координаты в формате: широта долгота (можно использовать запятые или пробелы)" /> @@ -146,7 +175,7 @@ export const StationEditPage = observer(() => { value={editStationData.common.city_id || ""} label="Город" onChange={(e) => { - const selectedCity = cities[language].data.find( + const selectedCity = cities["ru"].data.find( (city) => city.id === e.target.value ); setEditCommonData({ @@ -155,7 +184,7 @@ export const StationEditPage = observer(() => { }); }} > - {cities[language].data.map((city) => ( + {cities["ru"].data.map((city) => ( {city.name} diff --git a/src/pages/Station/StationPreviewPage/index.tsx b/src/pages/Station/StationPreviewPage/index.tsx index e7bb6d6..cdedf7e 100644 --- a/src/pages/Station/StationPreviewPage/index.tsx +++ b/src/pages/Station/StationPreviewPage/index.tsx @@ -21,7 +21,7 @@ export const StationPreviewPage = observer(() => { }, [id, language]); return ( - +