feat: trim for aplhabet sort

This commit is contained in:
2026-04-06 13:23:25 +03:00
parent a58f438dce
commit 4b02c6e9d3
25 changed files with 73 additions and 59 deletions

View File

@@ -74,7 +74,7 @@ export const ArticleListPage = observer(() => {
];
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return articleList[language].data
.filter((article) => !query || (article.heading ?? "").toLowerCase().includes(query))
.map((article) => ({

View File

@@ -121,7 +121,7 @@ export const CarrierListPage = observer(() => {
const canWriteCarriers = authStore.canWrite("carriers");
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return (carriers[language].data ?? [])
.filter((carrier) => !allowedCityIds || allowedCityIds.includes(carrier.city_id))
.filter(

View File

@@ -59,7 +59,7 @@ export const CityListPage = observer(() => {
}, [cities, countryStore.countries, language, isLoading]);
const filteredRows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
if (!query) return rows;
return rows.filter((row) => {
const cityName = (row.name ?? "").toLowerCase();

View File

@@ -74,7 +74,7 @@ export const CountryListPage = observer(() => {
];
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return (countries[language]?.data ?? [])
.filter((country) => !query || (country.name ?? "").toLowerCase().includes(query))
.map((country) => ({

View File

@@ -244,9 +244,9 @@ class MapStore {
const sorted = [...features];
switch (sortType) {
case "name_asc":
return sorted.sort((a, b) => a.name.localeCompare(b.name));
return sorted.sort((a, b) => a.name.trim().localeCompare(b.name.trim()));
case "name_desc":
return sorted.sort((a, b) => b.name.localeCompare(a.name));
return sorted.sort((a, b) => b.name.trim().localeCompare(a.name.trim()));
case "created_asc":
return sorted.sort((a, b) => {
if (
@@ -379,7 +379,7 @@ class MapStore {
}));
this.routes = this.routes.sort((a, b) =>
a.route_number.localeCompare(b.route_number),
a.route_number.trim().localeCompare(b.route_number.trim()),
);
await this.preloadRouteStations(routesIds);
@@ -2545,14 +2545,14 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
switch (sortType) {
case "name_asc":
return sorted.sort((a, b) =>
((a.get("name") as string) || "").localeCompare(
(b.get("name") as string) || "",
((a.get("name") as string) || "").trim().localeCompare(
((b.get("name") as string) || "").trim(),
),
);
case "name_desc":
return sorted.sort((a, b) =>
((b.get("name") as string) || "").localeCompare(
(a.get("name") as string) || "",
((b.get("name") as string) || "").trim().localeCompare(
((a.get("name") as string) || "").trim(),
),
);
case "created_asc":

View File

@@ -69,7 +69,7 @@ class MapStore {
path: route.path,
}));
this.routes = mappedRoutes.sort((a, b) =>
a.route_number.localeCompare(b.route_number)
a.route_number.trim().localeCompare(b.route_number.trim())
);
};

View File

@@ -97,7 +97,7 @@ export const MediaListPage = observer(() => {
];
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return media
.filter((item) => !query || (item.media_name ?? "").toLowerCase().includes(query))
.map((item) => ({

View File

@@ -267,9 +267,9 @@ export const RouteCreatePage = observer(() => {
language as keyof typeof carrierStore.carriers
].data?.find((c: any) => c.id === carrier_id)?.full_name || "",
carrier_id,
route_number: routeNumber,
route_sys_number: govRouteNumber,
route_name: routeName,
route_number: routeNumber.trim(),
route_sys_number: govRouteNumber.trim(),
route_name: routeName.trim(),
route_direction,
scale_min: scale_min !== null ? scale_min : 0,
scale_max: scale_max !== null ? scale_max : 0,

View File

@@ -149,7 +149,7 @@ export const RouteListPage = observer(() => {
const rows = useMemo(() => {
const { selectedCityId } = selectedCityStore;
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
let filtered = routes.data;
if (selectedCityId) {
const cityCarrierIds = new Set(

View File

@@ -122,7 +122,7 @@ export const SightListPage = observer(() => {
});
}, [sights, selectedCityStore.selectedCityId, canReadCities, authStore.meCities]);
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
const rows = filteredSights
.filter((sight: any) => !query || (sight.name ?? "").toLowerCase().includes(query))
.map((sight) => ({

View File

@@ -91,7 +91,7 @@ export const SnapshotListPage = observer(() => {
];
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return snapshots
.filter(
(snapshot) =>

View File

@@ -125,7 +125,7 @@ export const StationListPage = observer(() => {
const rows = useMemo(() => {
const { selectedCityId } = selectedCityStore;
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return stationLists[language].data
.filter((station: any) => !selectedCityId || station.city_id === selectedCityId)
.filter(

View File

@@ -109,7 +109,7 @@ export const UserListPage = observer(() => {
];
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return (users.data ?? [])
.filter((user) =>
!query ||

View File

@@ -138,7 +138,7 @@ export const VehicleListPage = observer(() => {
];
const rows = useMemo(() => {
const query = searchQuery.toLowerCase();
const query = searchQuery.trim().toLowerCase();
return (vehicles.data ?? [])
.filter(
(vehicle) =>