diff --git a/src/pages/Route/LinekedStations.tsx b/src/pages/Route/LinekedStations.tsx index 9f338be..814af4b 100644 --- a/src/pages/Route/LinekedStations.tsx +++ b/src/pages/Route/LinekedStations.tsx @@ -162,7 +162,10 @@ const LinkedItemsContentsInner = < const filteredAvailableItems = availableItems.filter((item) => { if (!searchQuery.trim()) return true; - return String(item.name).toLowerCase().includes(searchQuery.toLowerCase()); + const query = searchQuery.toLowerCase(); + const name = String(item.name || "").toLowerCase(); + const description = String(item.description || "").toLowerCase(); + return name.includes(query) || description.includes(query); }); useEffect(() => { @@ -206,12 +209,11 @@ const LinkedItemsContentsInner = < authInstance .post(`/${parentResource}/${parentId}/${childResource}`, { stations: reorderedItems.map((item) => { - const stationData: any = { id: item.id }; const transfers = getStationTransfers(item.id, item.transfers); - if (transfers) { - stationData.transfers = transfers; - } - return stationData; + return { + ...item, + transfers: transfers || item.transfers, + }; }), }) .catch((error) => { @@ -263,24 +265,23 @@ const LinkedItemsContentsInner = < const requestData = { stations: insertAtPosition( linkedItems.map((item) => { - const stationData: any = { id: item.id }; const transfers = getStationTransfers(item.id, item.transfers); - if (transfers) { - stationData.transfers = transfers; - } - return stationData; + return { + ...item, + transfers: transfers || item.transfers, + }; }), position, (() => { - const newStationData: any = { id: selectedItemId }; + if (!selectedItem) return { id: selectedItemId }; const transfers = getStationTransfers( selectedItemId, - selectedItem?.transfers + selectedItem.transfers ); - if (transfers) { - newStationData.transfers = transfers; - } - return newStationData; + return { + ...selectedItem, + transfers: transfers || selectedItem.transfers, + }; })() ), }; @@ -365,22 +366,21 @@ const LinkedItemsContentsInner = < setIsLinkingBulk(true); const selectedStations = Array.from(selectedItems).map((id) => { const item = allItems.find((item) => item.id === id); - const stationData: any = { id }; - const transfers = getStationTransfers(id, item?.transfers); - if (transfers) { - stationData.transfers = transfers; - } - return stationData; + if (!item) return { id }; + const transfers = getStationTransfers(id, item.transfers); + return { + ...item, + transfers: transfers || item.transfers, + }; }); const requestData = { stations: [ ...linkedItems.map((item) => { - const stationData: any = { id: item.id }; const transfers = getStationTransfers(item.id, item.transfers); - if (transfers) { - stationData.transfers = transfers; - } - return stationData; + return { + ...item, + transfers: transfers || item.transfers, + }; }), ...selectedStations, ], diff --git a/src/pages/Route/route-preview/MapDataContext.tsx b/src/pages/Route/route-preview/MapDataContext.tsx index 5d9b1d4..7b97201 100644 --- a/src/pages/Route/route-preview/MapDataContext.tsx +++ b/src/pages/Route/route-preview/MapDataContext.tsx @@ -169,7 +169,7 @@ export const MapDataProvider = observer( } function setIconSize(size: number) { - const clamped = Math.max(50, Math.min(300, size)); + const clamped = Math.max(1, Math.min(300, size)); setRouteChanges((prev) => { if (prev.icon_size === clamped) { return prev; @@ -179,7 +179,7 @@ export const MapDataProvider = observer( } function setFontSize(size: number) { - const clamped = Math.max(50, Math.min(300, size)); + const clamped = Math.max(1, Math.min(300, size)); setRouteChanges((prev) => { if (prev.font_size === clamped) { return prev; diff --git a/src/pages/Route/route-preview/RightSidebar.tsx b/src/pages/Route/route-preview/RightSidebar.tsx index 39c36bc..565439b 100644 --- a/src/pages/Route/route-preview/RightSidebar.tsx +++ b/src/pages/Route/route-preview/RightSidebar.tsx @@ -101,7 +101,7 @@ export function RightSidebar() { if (!Number.isFinite(value)) { return; } - const clamped = Math.max(50, Math.min(300, Math.round(value))); + const clamped = Math.max(1, Math.min(300, Math.round(value))); setIconSize(clamped); updateIconSize(clamped); }; @@ -110,7 +110,7 @@ export function RightSidebar() { if (!Number.isFinite(value)) { return; } - const clamped = Math.max(50, Math.min(300, Math.round(value))); + const clamped = Math.max(1, Math.min(300, Math.round(value))); setFontSize(clamped); updateFontSize(clamped); }; @@ -307,60 +307,58 @@ export function RightSidebar() { }} /> - - Размер иконок: {iconSize}% - - - { - if (typeof value === "number") { + onChange={(e) => { + const value = Number(e.target.value); + if (!isNaN(value)) { handleIconSizeChange(value); } }} - min={50} - max={300} - step={1} + style={{ backgroundColor: "#222", borderRadius: 4 }} sx={{ - color: "#fff", - "& .MuiSlider-thumb": { - backgroundColor: "#fff", + "& .MuiInputLabel-root": { + color: "#fff", }, - "& .MuiSlider-track": { - backgroundColor: "#fff", - }, - "& .MuiSlider-rail": { - backgroundColor: "#666", + "& .MuiInputBase-input": { + color: "#fff", }, }} + inputProps={{ + min: 1, + max: 300, + step: 1, + }} /> - - Размер шрифта: {fontSize}% - - - { - if (typeof value === "number") { + onChange={(e) => { + const value = Number(e.target.value); + if (!isNaN(value)) { handleFontSizeChange(value); } }} - min={50} - max={300} - step={1} + style={{ backgroundColor: "#222", borderRadius: 4 }} sx={{ - color: "#fff", - "& .MuiSlider-thumb": { - backgroundColor: "#fff", + "& .MuiInputLabel-root": { + color: "#fff", }, - "& .MuiSlider-track": { - backgroundColor: "#fff", - }, - "& .MuiSlider-rail": { - backgroundColor: "#666", + "& .MuiInputBase-input": { + color: "#fff", }, }} + inputProps={{ + min: 1, + max: 300, + step: 1, + }} /> { ? { right: 0, transform: "none" } : { left: "50%", transform: "translateX(-50%)" }; - const iconUrl = station.icon - ? `${import.meta.env.VITE_KRBL_MEDIA}${station.icon}/download?token=${localStorage.getItem("token") ?? ""}` - : null; + let isMediaIdEmptyResult = isMediaIdEmpty(station.icon); + const iconUrl = isMediaIdEmptyResult + ? null + : `${import.meta.env.VITE_KRBL_MEDIA}${ + station.icon + }/download?token=${localStorage.getItem("token") ?? ""}`; + const iconSizePx = Math.round(primaryFontSize * 1.2); const secondaryLineHeight = 1.2; @@ -2282,4 +2287,4 @@ export const WebGLRouteMapPrototype = observer(() => { ); }); -export default WebGLRouteMapPrototype; \ No newline at end of file +export default WebGLRouteMapPrototype;