fix: Fix Map page

This commit is contained in:
2025-06-12 22:50:43 +03:00
parent 27cb644242
commit 300ff262ce
41 changed files with 2216 additions and 1055 deletions

View File

@ -41,6 +41,9 @@ export const CountryCreatePage = observer(() => {
</div>
<div className="flex flex-col gap-10 w-full items-end">
<div className="flex gap-10 items-center mb-5 max-w-[80%]">
<h1 className="text-3xl break-words">Создание страны</h1>
</div>
<TextField
fullWidth
label="Код страны"

View File

@ -31,11 +31,18 @@ export const CountryEditPage = observer(() => {
useEffect(() => {
(async () => {
if (id) {
const data = await getCountry(id as string, language);
setEditCountryData(data.name, language);
// Fetch data for all languages
const ruData = await getCountry(id as string, "ru");
const enData = await getCountry(id as string, "en");
const zhData = await getCountry(id as string, "zh");
// Set data for each language
setEditCountryData(ruData.name, "ru");
setEditCountryData(enData.name, "en");
setEditCountryData(zhData.name, "zh");
}
})();
}, [id, language]);
}, [id]);
return (
<Paper className="w-full h-full p-3 flex flex-col gap-10">
@ -51,6 +58,9 @@ export const CountryEditPage = observer(() => {
</div>
<div className="flex flex-col gap-10 w-full items-end">
<div className="flex gap-10 items-center mb-5 max-w-[80%]">
<h1 className="text-3xl break-words">{editCountryData.ru.name}</h1>
</div>
<TextField
fullWidth
label="Код страны"

View File

@ -2,15 +2,15 @@ import { DataGrid, GridColDef, GridRenderCellParams } from "@mui/x-data-grid";
import { countryStore, languageStore } from "@shared";
import { useEffect, useState } from "react";
import { observer } from "mobx-react-lite";
import { Eye, Pencil, Trash2 } from "lucide-react";
import { Pencil, Trash2, Minus } from "lucide-react";
import { useNavigate } from "react-router-dom";
import { CreateButton, DeleteModal, LanguageSwitcher } from "@widgets";
export const CountryListPage = observer(() => {
const { countries, getCountries } = countryStore;
const { countries, getCountries, deleteCountry } = countryStore;
const navigate = useNavigate();
const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
const [rowId, setRowId] = useState<string | null>(null); // Lifted state
const [rowId, setRowId] = useState<string | null>(null);
const { language } = languageStore;
useEffect(() => {
@ -22,6 +22,17 @@ export const CountryListPage = observer(() => {
field: "name",
headerName: "Название",
flex: 1,
renderCell: (params: GridRenderCellParams) => {
return (
<div className="w-full h-full flex items-center ">
{params.value ? (
params.value
) : (
<Minus size={20} className="text-red-500" />
)}
</div>
);
},
},
{
field: "actions",
@ -37,9 +48,9 @@ export const CountryListPage = observer(() => {
>
<Pencil size={20} className="text-blue-500" />
</button>
<button onClick={() => navigate(`/country/${params.row.code}`)}>
{/* <button onClick={() => navigate(`/country/${params.row.code}`)}>
<Eye size={20} className="text-green-500" />
</button>
</button> */}
<button
onClick={() => {
setIsDeleteModalOpen(true);
@ -54,7 +65,7 @@ export const CountryListPage = observer(() => {
},
];
const rows = countries[language]?.map((country) => ({
const rows = countries[language]?.data.map((country) => ({
id: country.code,
code: country.code,
name: country.name,
@ -75,17 +86,14 @@ export const CountryListPage = observer(() => {
<DeleteModal
open={isDeleteModalOpen}
onDelete={async () => {
if (rowId) {
await countryStore.deleteCountry(rowId, language);
getCountries(language); // Refresh the list after deletion
setIsDeleteModalOpen(false);
}
setIsDeleteModalOpen(false);
if (!rowId) return;
await deleteCountry(rowId, language);
setRowId(null);
setIsDeleteModalOpen(false);
}}
onCancel={() => {
setIsDeleteModalOpen(false);
setRowId(null);
setIsDeleteModalOpen(false);
}}
/>
</>

View File

@ -15,11 +15,16 @@ export const CountryPreviewPage = observer(() => {
useEffect(() => {
(async () => {
if (id) {
const data = await getCountry(id as string, language);
setEditCountryData(data.name, language);
const ruData = await getCountry(id as string, "ru");
const enData = await getCountry(id as string, "en");
const zhData = await getCountry(id as string, "zh");
setEditCountryData(ruData.name, "ru");
setEditCountryData(enData.name, "en");
setEditCountryData(zhData.name, "zh");
}
})();
}, [id, language]);
}, [id]);
return (
<Paper className="w-full h-full p-3 flex flex-col gap-10">
@ -55,7 +60,7 @@ export const CountryPreviewPage = observer(() => {
<div className="flex flex-col gap-10 w-full">
<div className="flex flex-col gap-2">
<h1 className="text-lg font-bold">Название</h1>
<p>{country[id!]?.[language]?.name}</p>
<p>{country[id!]?.ru?.name}</p>
</div>
</div>
)}