feat: update map, admin to and cache
This commit is contained in:
@@ -8,7 +8,7 @@ import {
|
||||
Box,
|
||||
} from "@mui/material";
|
||||
import { observer } from "mobx-react-lite";
|
||||
import { authStore, cityStore, selectedCityStore, type City } from "@shared";
|
||||
import { authStore, cityStore, selectedCityStore, snapshotStore, type City } from "@shared";
|
||||
import { MapPin } from "lucide-react";
|
||||
|
||||
export const CitySelector: React.FC = observer(() => {
|
||||
@@ -46,12 +46,14 @@ export const CitySelector: React.FC = observer(() => {
|
||||
const handleCityChange = (event: SelectChangeEvent<string>) => {
|
||||
const cityId = event.target.value;
|
||||
if (cityId === "") {
|
||||
snapshotStore.clearStoreCache();
|
||||
setSelectedCity(null);
|
||||
return;
|
||||
}
|
||||
|
||||
const city = currentCities.find((c) => c.id === Number(cityId));
|
||||
if (city) {
|
||||
snapshotStore.clearStoreCache();
|
||||
setSelectedCity(city);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -9,7 +9,6 @@ import {
|
||||
vehicleStore,
|
||||
routeStore,
|
||||
Vehicle,
|
||||
carrierStore,
|
||||
selectedCityStore,
|
||||
menuStore,
|
||||
VEHICLE_TYPES,
|
||||
@@ -184,31 +183,14 @@ export const DevicesTable = observer(() => {
|
||||
pageSize: 50,
|
||||
});
|
||||
|
||||
const filterVehiclesBySelectedCity = (vehiclesList: Vehicle[]): Vehicle[] => {
|
||||
const selectedCityId = selectedCityStore.selectedCityId;
|
||||
const { selectedCityId } = selectedCityStore;
|
||||
|
||||
if (!selectedCityId) {
|
||||
return vehiclesList;
|
||||
}
|
||||
|
||||
const carriersInSelectedCityIds = new Set(
|
||||
carrierStore.carriers.ru.data
|
||||
.filter((carrier) => carrier.city_id === selectedCityId)
|
||||
.map((carrier) => carrier.id),
|
||||
const filteredVehicles = useMemo((): Vehicle[] => {
|
||||
if (!selectedCityId) return [];
|
||||
return (vehicles.data as Vehicle[]).filter(
|
||||
(vehicle) => vehicle.vehicle.city_id === selectedCityId,
|
||||
);
|
||||
|
||||
if (carriersInSelectedCityIds.size === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return vehiclesList.filter((vehicle) =>
|
||||
carriersInSelectedCityIds.has(vehicle.vehicle.carrier_id),
|
||||
);
|
||||
};
|
||||
|
||||
const filteredVehicles = filterVehiclesBySelectedCity(
|
||||
vehicles.data as Vehicle[],
|
||||
);
|
||||
}, [selectedCityId, vehicles.data]);
|
||||
|
||||
const rows = useMemo(
|
||||
() => transformToRows(filteredVehicles),
|
||||
@@ -748,13 +730,8 @@ export const DevicesTable = observer(() => {
|
||||
setIsLoading(false);
|
||||
};
|
||||
fetchData();
|
||||
}, [getDevices, getSnapshots, getVehicles, getRoutes, isMaintenanceOnly]);
|
||||
}, [getDevices, getSnapshots, getVehicles, getRoutes, isMaintenanceOnly, selectedCityStore.cityVersion]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!isMaintenanceOnly) {
|
||||
carrierStore.getCarriers("ru");
|
||||
}
|
||||
}, [isMaintenanceOnly]);
|
||||
|
||||
const handleOpenSendSnapshotModal = () => {
|
||||
if (!canWriteDevices) {
|
||||
@@ -888,6 +865,8 @@ export const DevicesTable = observer(() => {
|
||||
>
|
||||
{isLoading ? (
|
||||
<CircularProgress size={20} />
|
||||
) : !selectedCityId ? (
|
||||
"Выберите город"
|
||||
) : (
|
||||
"Нет устройств для отображения"
|
||||
)}
|
||||
@@ -928,13 +907,17 @@ export const DevicesTable = observer(() => {
|
||||
{!isCollapsed && (
|
||||
<Box sx={{ p: 0 }}>
|
||||
<DataGrid
|
||||
rows={groupRows}
|
||||
columns={visibleColumns}
|
||||
checkboxSelection={canWriteDevices}
|
||||
disableRowSelectionExcludeModel
|
||||
disableRowSelectionOnClick
|
||||
loading={isLoading}
|
||||
paginationModel={paginationModel}
|
||||
rows={groupRows}
|
||||
columns={visibleColumns}
|
||||
checkboxSelection={canWriteDevices}
|
||||
disableRowSelectionExcludeModel
|
||||
disableRowSelectionOnClick
|
||||
onRowDoubleClick={(params) => {
|
||||
if (canWriteDevices) {
|
||||
navigate(`/vehicle/${params.row.vehicle_id}/edit`);
|
||||
}
|
||||
}}
|
||||
loading={isLoading} paginationModel={paginationModel}
|
||||
onPaginationModelChange={setPaginationModel}
|
||||
pageSizeOptions={[50]}
|
||||
onRowSelectionModelChange={
|
||||
|
||||
Reference in New Issue
Block a user