Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1917b2cf5a | |||
| 5298fb9f60 | |||
| c95a6517e9 |
@@ -124,7 +124,6 @@ export const clearMapCaches = () => {
|
|||||||
interface ApiRoute {
|
interface ApiRoute {
|
||||||
id: number;
|
id: number;
|
||||||
route_number: string;
|
route_number: string;
|
||||||
route_name: string;
|
|
||||||
path: [number, number][];
|
path: [number, number][];
|
||||||
center_latitude: number;
|
center_latitude: number;
|
||||||
center_longitude: number;
|
center_longitude: number;
|
||||||
@@ -371,7 +370,6 @@ class MapStore {
|
|||||||
this.routes = routeResponses.map((res) => ({
|
this.routes = routeResponses.map((res) => ({
|
||||||
id: res.data.id,
|
id: res.data.id,
|
||||||
route_number: res.data.route_number,
|
route_number: res.data.route_number,
|
||||||
route_name: res.data.route_name || "",
|
|
||||||
path: res.data.path,
|
path: res.data.path,
|
||||||
center_latitude: res.data.center_latitude,
|
center_latitude: res.data.center_latitude,
|
||||||
center_longitude: res.data.center_longitude,
|
center_longitude: res.data.center_longitude,
|
||||||
@@ -2304,8 +2302,6 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
|
|||||||
});
|
});
|
||||||
feature.setId(`route-${route.id}`);
|
feature.setId(`route-${route.id}`);
|
||||||
feature.set("featureType", "route");
|
feature.set("featureType", "route");
|
||||||
feature.set("routeName", route.route_name);
|
|
||||||
feature.set("routeNumber", route.route_number);
|
|
||||||
return feature;
|
return feature;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2321,18 +2317,11 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
|
|||||||
|
|
||||||
const filteredFeatures = useMemo(() => {
|
const filteredFeatures = useMemo(() => {
|
||||||
if (!searchQuery.trim()) return allFeatures;
|
if (!searchQuery.trim()) return allFeatures;
|
||||||
const normalizedQuery = searchQuery.toLowerCase();
|
return allFeatures.filter((f) =>
|
||||||
return allFeatures.filter((f) => {
|
((f.get("name") as string) || "")
|
||||||
const candidates = [
|
.toLowerCase()
|
||||||
(f.get("name") as string) || "",
|
.includes(searchQuery.toLowerCase())
|
||||||
(f.get("description") as string) || "",
|
|
||||||
(f.get("routeName") as string) || "",
|
|
||||||
(f.get("routeNumber") as string) || "",
|
|
||||||
];
|
|
||||||
return candidates.some((value) =>
|
|
||||||
value.toLowerCase().includes(normalizedQuery)
|
|
||||||
);
|
);
|
||||||
});
|
|
||||||
}, [allFeatures, searchQuery]);
|
}, [allFeatures, searchQuery]);
|
||||||
|
|
||||||
const handleFeatureClick = useCallback(
|
const handleFeatureClick = useCallback(
|
||||||
@@ -2660,38 +2649,6 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
|
|||||||
featureType === "station" &&
|
featureType === "station" &&
|
||||||
description &&
|
description &&
|
||||||
description.trim() !== "";
|
description.trim() !== "";
|
||||||
const routeName =
|
|
||||||
featureType === "route"
|
|
||||||
? (feature.get("routeName") as string) || ""
|
|
||||||
: "";
|
|
||||||
const routeNumber =
|
|
||||||
featureType === "route"
|
|
||||||
? (feature.get("routeNumber") as string) || fName
|
|
||||||
: "";
|
|
||||||
const routeNumberTrimmed = routeNumber.trim();
|
|
||||||
const routeNameTrimmed = routeName.trim();
|
|
||||||
const displayName =
|
|
||||||
featureType === "route" ? routeNumberTrimmed || fName : fName;
|
|
||||||
const showRouteName =
|
|
||||||
featureType === "route" &&
|
|
||||||
routeNameTrimmed !== "" &&
|
|
||||||
routeNameTrimmed !== displayName;
|
|
||||||
const titleParts: string[] = [];
|
|
||||||
if (featureType === "route") {
|
|
||||||
if (routeNumberTrimmed) {
|
|
||||||
titleParts.push(routeNumberTrimmed);
|
|
||||||
}
|
|
||||||
if (routeNameTrimmed) {
|
|
||||||
titleParts.push(routeNameTrimmed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const titleText =
|
|
||||||
featureType === "route"
|
|
||||||
? titleParts.join(" • ") ||
|
|
||||||
routeNumberTrimmed ||
|
|
||||||
routeNameTrimmed ||
|
|
||||||
fName
|
|
||||||
: fName;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
@@ -2710,7 +2667,7 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
|
|||||||
checked={isChecked}
|
checked={isChecked}
|
||||||
onChange={() => handleCheckboxChange(fId)}
|
onChange={() => handleCheckboxChange(fId)}
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
aria-label={`Выбрать ${titleText}`}
|
aria-label={`Выбрать ${fName}`}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -2735,9 +2692,9 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
|
|||||||
<span
|
<span
|
||||||
className={`font-medium whitespace-nowrap overflow-x-auto block
|
className={`font-medium whitespace-nowrap overflow-x-auto block
|
||||||
scrollbar-visible`}
|
scrollbar-visible`}
|
||||||
title={titleText}
|
title={fName}
|
||||||
>
|
>
|
||||||
{displayName}
|
{fName}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{showDescription && (
|
{showDescription && (
|
||||||
@@ -2745,11 +2702,6 @@ const MapSightbar: React.FC<MapSightbarProps> = observer(
|
|||||||
{description}
|
{description}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{showRouteName && (
|
|
||||||
<div className="mt-1 text-xs text-gray-600">
|
|
||||||
{routeNameTrimmed}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-shrink-0 flex items-center space-x-1 opacity-60 group-hover:opacity-100">
|
<div className="flex-shrink-0 flex items-center space-x-1 opacity-60 group-hover:opacity-100">
|
||||||
<button
|
<button
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -132,16 +132,12 @@ class SightsStore {
|
|||||||
common: boolean
|
common: boolean
|
||||||
) => {
|
) => {
|
||||||
if (common) {
|
if (common) {
|
||||||
// @ts-ignore
|
|
||||||
this.sight!.common = {
|
this.sight!.common = {
|
||||||
// @ts-ignore
|
|
||||||
...this.sight!.common,
|
...this.sight!.common,
|
||||||
...content,
|
...content,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// @ts-ignore
|
|
||||||
this.sight![language] = {
|
this.sight![language] = {
|
||||||
// @ts-ignore
|
|
||||||
...this.sight![language],
|
...this.sight![language],
|
||||||
...content,
|
...content,
|
||||||
};
|
};
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user