This commit is contained in:
2025-07-28 13:03:29 +05:00
4 changed files with 60 additions and 20 deletions
+22 -18
View File
@@ -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") ? (
<FloorPlanDubaiMarina7_38Unit
key={unit.unitNo}
selectedUnit={selectedUnit}
onSelect={setSelectedUnit}
formattedUnitType={
dubaiMarinaMasks.get(unit.unitNo.slice(-2))!.formattedUnitType
}
formattedUnitType={maskData.formattedUnitType}
unit={unit}
floor={Number(selectedFloor!)}
d={dubaiMarinaMasks.get(unit.unitNo.slice(-2))!.d}
textTransform={`translate(${dubaiMarinaMasks
.get(unit.unitNo.slice(-2))!
.textTransform.join(" ")})`}
d={maskData.d}
textTransform={`translate(${maskData.textTransform.join(" ")})`}
/>
) : (
<FloorPlanDubaiMarina7_38CombUnit
key={unit.unitNo}
selectedUnit={selectedUnit}
onSelect={setSelectedUnit}
formattedUnitType={
dubaiMarinaMasks.get(unit.unitNo.slice(-2))!.formattedUnitType
}
formattedUnitType={maskData.formattedUnitType}
unit={unit}
floor={Number(selectedFloor!)}
d={dubaiMarinaMasks.get(unit.unitNo.slice(-2))!.d}
textTransform={`translate(${dubaiMarinaMasks
.get(unit.unitNo.slice(-2))!
.textTransform.join(" ")})`}
d={maskData.d}
textTransform={`translate(${maskData.textTransform.join(" ")})`}
/>
)
)}
);
})}
</svg>
);
}
+2 -2
View File
@@ -165,7 +165,7 @@ function FloorsPage() {
/>
</div>
</div>
{/* <div className="flex items-center justify-center gap-2">
<div className="flex items-center justify-center gap-2">
<Button
variant={!isCombinable ? "cta" : "primary"}
className="w-full"
@@ -180,7 +180,7 @@ function FloorsPage() {
>
Combinable
</Button>
</div> */}
</div>
<div
className="2xl:py-[1.667vw] 2xl:px-[1.111vw] max-2xl:p-4 bg-[#F3F3F2] 2xl:rounded-[0.833vw] rounded-lg relative 2xl:space-y-[2.222vw] space-y-8"
onMouseMove={(e) =>
+3
View File
@@ -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();
+33
View File
@@ -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<string>();
// Собираем все номера квартир с "-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);
}
});
}