import { DataGrid, GridColDef, GridRenderCellParams } from "@mui/x-data-grid"; import { carrierStore, languageStore, routeStore } from "@shared"; import { useEffect, useState } from "react"; import { observer } from "mobx-react-lite"; import { Map, Pencil, Trash2, Minus } from "lucide-react"; import { useNavigate } from "react-router-dom"; import { CreateButton, DeleteModal } from "@widgets"; import { LanguageSwitcher } from "@widgets"; export const RouteListPage = observer(() => { const { routes, getRoutes, deleteRoute } = routeStore; const { carriers, getCarriers } = carrierStore; const navigate = useNavigate(); const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); const [isBulkDeleteModalOpen, setIsBulkDeleteModalOpen] = useState(false); const [rowId, setRowId] = useState(null); const [ids, setIds] = useState([]); const { language } = languageStore; useEffect(() => { const fetchData = async () => { await getCarriers("ru"); await getCarriers("en"); await getCarriers("zh"); await getRoutes(); }; fetchData(); }, [language]); const columns: GridColDef[] = [ { field: "carrier_id", headerName: "Перевозчик", width: 250, renderCell: (params: GridRenderCellParams) => { return (
{params.value ? ( carriers[language].data.find( (carrier) => carrier.id == params.value )?.short_name ) : ( )}
); }, }, { field: "route_number", headerName: "Номер маршрута", flex: 1, renderCell: (params: GridRenderCellParams) => { return (
{params.value ? ( params.value ) : ( )}
); }, }, { field: "route_direction", headerName: "Направление", flex: 1, renderCell: (params: GridRenderCellParams) => { return (

{params.row.route_direction}

); }, }, { field: "actions", headerName: "Действия", width: 250, align: "center", headerAlign: "center", renderCell: (params: GridRenderCellParams) => { return (
{/* */}
); }, }, ]; const rows = routes.data.map((route) => ({ id: route.id, carrier_id: route.carrier_id, route_number: route.route_number, route_direction: route.route_direction ? "Прямой" : "Обратный", })); return ( <>

Маршруты

0 ? 1 : 0 }} >
{ setIds(Array.from(newSelection.ids) as number[]); }} hideFooter />
{ if (rowId) { deleteRoute(rowId); } setIsDeleteModalOpen(false); setRowId(null); }} onCancel={() => { setIsDeleteModalOpen(false); setRowId(null); }} /> { await Promise.all(ids.map((id) => deleteRoute(id))); getRoutes(); setIsBulkDeleteModalOpen(false); setIds([]); }} onCancel={() => { setIsBulkDeleteModalOpen(false); }} /> ); });