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