diff --git a/src/components/FloorPlanDubaiMarina7_38Comb.tsx b/src/components/FloorPlanDubaiMarina7_38Comb.tsx index 169ae3e..6cae308 100644 --- a/src/components/FloorPlanDubaiMarina7_38Comb.tsx +++ b/src/components/FloorPlanDubaiMarina7_38Comb.tsx @@ -7,6 +7,7 @@ import { useEffect, useState } from "react"; import clsx from "clsx"; import { dubaiMarinaMasks } from "../data/floor-plan-masks/dubai-marina_7-38_comb"; import { FloorPlanDubaiMarina7_38Unit } from "./FloorPlanDubaiMarina7_38"; +import { filterDuplicateUnits } from "../utils/filterDuplicateUnits"; // import Button from "./ui/Button"; // import { useClickAway } from "@uidotdev/usehooks"; @@ -62,39 +63,42 @@ function FloorPlanDubaiMarina7_38Comb({ ) )} */} - {unitsOnFloor.map((unit) => - !unit.unitNo.endsWith("-C") ? ( + {filterDuplicateUnits(unitsOnFloor).map((unit) => { + // Получаем ключ для поиска в масках: для "2901-C" и "2901" это будет "01" + const maskKey = unit.unitNo.split("-")[0].slice(-2); + const maskData = dubaiMarinaMasks.get(maskKey); + + if (!maskData) { + console.warn( + `Mask not found for unit ${unit.unitNo}, key: ${maskKey}` + ); + return null; + } + + return !unit.unitNo.endsWith("-C") ? ( ) : ( - ) - )} + ); + })} ); } diff --git a/src/pages/FloorsPage.tsx b/src/pages/FloorsPage.tsx index 05e4761..67d1541 100644 --- a/src/pages/FloorsPage.tsx +++ b/src/pages/FloorsPage.tsx @@ -165,7 +165,7 @@ function FloorsPage() { /> - {/*
+
-
*/} +
diff --git a/src/pages/UnitPage.tsx b/src/pages/UnitPage.tsx index 412c905..9b215c7 100644 --- a/src/pages/UnitPage.tsx +++ b/src/pages/UnitPage.tsx @@ -58,12 +58,15 @@ function UnitPage() { setUnitTypeVariantMarasiDrive(unitTypeVariantMarasiDrive); } +<<<<<<< HEAD // if (unit) { // console.log("Unit number:", unit.unitNo); // console.log("Is combinable:", isUnitCombinable(unit)); // console.log("Unit type:", unit.unitType); // } +======= +>>>>>>> 964167e863ddf4416c0e747dc4d25c185dff4505 }, [unit]); const { favoriteUnits, setFavoriteUnits } = useFavoritesUnitsStore(); diff --git a/src/utils/filterDuplicateUnits.ts b/src/utils/filterDuplicateUnits.ts new file mode 100644 index 0000000..2788623 --- /dev/null +++ b/src/utils/filterDuplicateUnits.ts @@ -0,0 +1,33 @@ +import { Unit } from "../types/IUnit"; + +/** + * Фильтрует массив квартир, удаляя дубликаты без "-C" если есть версия с "-C" + * Например: если есть и "2901" и "2901-C", то "2901" будет удален + * + * @param units - массив квартир для фильтрации + * @returns отфильтрованный массив квартир + */ +export function filterDuplicateUnits(units: Unit[]): Unit[] { + // Создаем Set номеров квартир с "-C" для быстрого поиска + const unitsWithC = new Set(); + + // Собираем все номера квартир с "-C" + units.forEach(unit => { + if (unit.unitNo.endsWith("-C")) { + // Получаем базовый номер без "-C" + const baseNumber = unit.unitNo.slice(0, -2); + unitsWithC.add(baseNumber); + } + }); + + // Фильтруем массив: оставляем квартиры с "-C" и квартиры без "-C" только если нет дубля с "-C" + return units.filter(unit => { + if (unit.unitNo.endsWith("-C")) { + // Всегда оставляем квартиры с "-C" + return true; + } else { + // Оставляем квартиры без "-C" только если нет версии с "-C" + return !unitsWithC.has(unit.unitNo); + } + }); +} \ No newline at end of file