mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
Встроенная библиотека мебели была смешанной: 44 предмета рисовал дизайнер, а 12 — код, прямоугольниками и эллипсами в unit box. Они выбивались из стиля, и три категории меню (`computer`, `hood`, `oven`) вообще не открывались, потому что вида сверху для них не было. Пакет 0.4.0 перерисовывает все 56 существующих публичных ID и добавляет четыре новых: `computer`, `hood`, `oven`, `cactus`. Каталог становится равен поставке: 60 символов, 32 непустые категории. Совместимость. Ни один сохранённый план не мигрирует: положение, размер, поворот, отражение, цвет, прозрачность и толщина линии не трогаются, а default-размеры всех 56 прежних ID совпадают со старыми до числа — таблица зашита в `test/furniture.test.mjs`, чтобы сдвиг было видно тестом, а не глазами. Ловушка, ради которой примитивы удалены целиком. Библиотека собиралась союзом каталога и `LEGACY_FURNITURE`, и обе половины несли ОДНИ И ТЕ ЖЕ публичные ID. `BY_ID` — это `Map`, она оставляет последнюю запись, поэтому примитив молча побеждал дизайнерский рисунок, который его заменял: задача выглядит выполненной, 12 предметов не обновились, ни один существующий тест этого не видит. Поэтому `LEGACY_FURNITURE`, `RETAINED_IDS`, тип `Prim`, `box()` и `primitivePathD` удалены, а на дубликаты в каталоге стоит тест и мутант. Два продуктовых решения владельца (#593): - `cactus` живёт в категории `plant`, а не `exercise`, как предлагал пакет: плитка «Тренажёр» рисует тренажёр, и открывать её на кактус — врать о содержимом палитры. `exercise` остаётся скрытой пустой категорией, непустых становится 32, а не 33; - при отказе ленивого чанка с рисунками не рисуется НИЧЕГО. Прежде 12 примитивов рисовались всегда, и `docs/FURNITURE.md` это обещал; обещание снято. Это единственное место, где задача ухудшает наблюдаемое поведение, и оно проверяется смоком, а не словом. Бюджеты. Ревью ТЗ показало, что «бюджет ленивого графа защищён» было заявлением без гейта: размеры печатались в отчёт и ни с чем не сравнивались. Добавлены `lazyGraphCeilingViolation` и два настоящих потолка со своим мутантом. Стартовый граф ушёл ниже полосы, поэтому `INITIAL_VIEW_GZIP_CEILING` опущен 292 400 → 291 400 — вторая половина храповика, без которой выигрыш отыграется. Провенанс. Документ пакета воссоздан под 0.4.0: грант владельца, имя архива и его SHA-256. Это единственная исполнимая защита от повторения истории #159, и она не ослаблена — число проверок в тесте не уменьшилось, а мутант подменяет хеш и обязан её покраснить. Свидетели: пять новых мутантов, новая golden-сцена `furniture-new-symbols-light` для четырёх новых ID, матрица 63 → 64. Шестой мутант правится, а не добавляется: `furniture-placement-needs-art` ссылался на удалённое поле `g` и переставал компилироваться — раннер честно отличал это от «пойман» и отчитывался setup-failure. Ложь мутанта осталась прежней по смыслу, убрана только ветка про примитив. i18n: 7 ключей × 4 локали. `furn.cat_exercise` не добавлен — категория скрыта. Issue: #593 User-Visible: yes
1027 lines
35 KiB
JSON
1027 lines
35 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"view_schema": 2,
|
|
"pack_id": "houseplan",
|
|
"pack_version": "0.4.0",
|
|
"title_ru": "Набор мебели: меню и план",
|
|
"title_en": "Furniture pack: menu and plan",
|
|
"author": "Sergey Matyunin (Matysh)",
|
|
"license": "MIT",
|
|
"source_url": "https://www.figma.com/design/cpGN8MhJGydwVOUzZv8dia/House-plan?node-id=271-95",
|
|
"menu_icons": [
|
|
{
|
|
"id": "air_conditioner",
|
|
"name_ru": "Кондиционер",
|
|
"name_en": "Air conditioner",
|
|
"group": "appliance",
|
|
"file": "svg/menu/air_conditioner.svg"
|
|
},
|
|
{
|
|
"id": "armchair",
|
|
"name_ru": "Кресла",
|
|
"name_en": "Armchairs",
|
|
"group": "furniture",
|
|
"file": "svg/menu/armchair.svg"
|
|
},
|
|
{
|
|
"id": "bathtub",
|
|
"name_ru": "Ванны",
|
|
"name_en": "Bathtubs",
|
|
"group": "sanitary",
|
|
"file": "svg/menu/bathtub.svg"
|
|
},
|
|
{
|
|
"id": "bed",
|
|
"name_ru": "Кровати",
|
|
"name_en": "Beds",
|
|
"group": "furniture",
|
|
"file": "svg/menu/bed.svg"
|
|
},
|
|
{
|
|
"id": "bidet",
|
|
"name_ru": "Биде",
|
|
"name_en": "Bidets",
|
|
"group": "sanitary",
|
|
"file": "svg/menu/bidet.svg"
|
|
},
|
|
{
|
|
"id": "boiler",
|
|
"name_ru": "Бойлер",
|
|
"name_en": "Water heater",
|
|
"group": "appliance",
|
|
"file": "svg/menu/boiler.svg"
|
|
},
|
|
{
|
|
"id": "chair",
|
|
"name_ru": "Стулья",
|
|
"name_en": "Chairs",
|
|
"group": "furniture",
|
|
"file": "svg/menu/chair.svg"
|
|
},
|
|
{
|
|
"id": "coffee_table",
|
|
"name_ru": "Журнальные столы",
|
|
"name_en": "Coffee tables",
|
|
"group": "furniture",
|
|
"file": "svg/menu/coffee_table.svg"
|
|
},
|
|
{
|
|
"id": "computer",
|
|
"name_ru": "Компьютер",
|
|
"name_en": "Computer",
|
|
"group": "appliance",
|
|
"file": "svg/menu/computer.svg"
|
|
},
|
|
{
|
|
"id": "cooktop",
|
|
"name_ru": "Варочные панели",
|
|
"name_en": "Cooktops",
|
|
"group": "appliance",
|
|
"file": "svg/menu/cooktop.svg"
|
|
},
|
|
{
|
|
"id": "dining_table",
|
|
"name_ru": "Обеденные столы",
|
|
"name_en": "Dining tables",
|
|
"group": "furniture",
|
|
"file": "svg/menu/dining_table.svg"
|
|
},
|
|
{
|
|
"id": "dishwasher",
|
|
"name_ru": "Посудомоечная машина",
|
|
"name_en": "Dishwasher",
|
|
"group": "appliance",
|
|
"file": "svg/menu/dishwasher.svg"
|
|
},
|
|
{
|
|
"id": "dryer",
|
|
"name_ru": "Сушильная машина",
|
|
"name_en": "Dryer",
|
|
"group": "appliance",
|
|
"file": "svg/menu/dryer.svg"
|
|
},
|
|
{
|
|
"id": "exercise",
|
|
"name_ru": "Тренажёр",
|
|
"name_en": "Exercise equipment",
|
|
"group": "other",
|
|
"file": "svg/menu/exercise.svg"
|
|
},
|
|
{
|
|
"id": "fireplace",
|
|
"name_ru": "Камин",
|
|
"name_en": "Fireplace",
|
|
"group": "other",
|
|
"file": "svg/menu/fireplace.svg"
|
|
},
|
|
{
|
|
"id": "fridge",
|
|
"name_ru": "Холодильник",
|
|
"name_en": "Refrigerator",
|
|
"group": "appliance",
|
|
"file": "svg/menu/fridge.svg"
|
|
},
|
|
{
|
|
"id": "hood",
|
|
"name_ru": "Вытяжка",
|
|
"name_en": "Range hood",
|
|
"group": "appliance",
|
|
"file": "svg/menu/hood.svg"
|
|
},
|
|
{
|
|
"id": "kitchen_cabinet",
|
|
"name_ru": "Кухонные шкафы",
|
|
"name_en": "Kitchen cabinets",
|
|
"group": "furniture",
|
|
"file": "svg/menu/kitchen_cabinet.svg"
|
|
},
|
|
{
|
|
"id": "kitchen_sink",
|
|
"name_ru": "Кухонные мойки",
|
|
"name_en": "Kitchen sinks",
|
|
"group": "sanitary",
|
|
"file": "svg/menu/kitchen_sink.svg"
|
|
},
|
|
{
|
|
"id": "nightstand",
|
|
"name_ru": "Тумбы",
|
|
"name_en": "Cabinets",
|
|
"group": "furniture",
|
|
"file": "svg/menu/nightstand.svg"
|
|
},
|
|
{
|
|
"id": "oven",
|
|
"name_ru": "Духовка",
|
|
"name_en": "Oven",
|
|
"group": "appliance",
|
|
"file": "svg/menu/oven.svg"
|
|
},
|
|
{
|
|
"id": "plant",
|
|
"name_ru": "Растение",
|
|
"name_en": "Plant",
|
|
"group": "other",
|
|
"file": "svg/menu/plant.svg"
|
|
},
|
|
{
|
|
"id": "rug",
|
|
"name_ru": "Ковер",
|
|
"name_en": "Rug",
|
|
"group": "other",
|
|
"file": "svg/menu/rug.svg"
|
|
},
|
|
{
|
|
"id": "shelving",
|
|
"name_ru": "Стеллажи",
|
|
"name_en": "Shelving",
|
|
"group": "furniture",
|
|
"file": "svg/menu/shelving.svg"
|
|
},
|
|
{
|
|
"id": "shower",
|
|
"name_ru": "Душ",
|
|
"name_en": "Shower",
|
|
"group": "sanitary",
|
|
"file": "svg/menu/shower.svg"
|
|
},
|
|
{
|
|
"id": "sink",
|
|
"name_ru": "Раковина",
|
|
"name_en": "Sink",
|
|
"group": "sanitary",
|
|
"file": "svg/menu/sink.svg"
|
|
},
|
|
{
|
|
"id": "sofa",
|
|
"name_ru": "Диваны",
|
|
"name_en": "Sofas",
|
|
"group": "furniture",
|
|
"file": "svg/menu/sofa.svg"
|
|
},
|
|
{
|
|
"id": "stairs",
|
|
"name_ru": "Лестница",
|
|
"name_en": "Stairs",
|
|
"group": "other",
|
|
"file": "svg/menu/stairs.svg"
|
|
},
|
|
{
|
|
"id": "toilet",
|
|
"name_ru": "Унитазы",
|
|
"name_en": "Toilets",
|
|
"group": "sanitary",
|
|
"file": "svg/menu/toilet.svg"
|
|
},
|
|
{
|
|
"id": "tv",
|
|
"name_ru": "Телевизоры",
|
|
"name_en": "Televisions",
|
|
"group": "appliance",
|
|
"file": "svg/menu/tv.svg"
|
|
},
|
|
{
|
|
"id": "wardrobe",
|
|
"name_ru": "Шкафы",
|
|
"name_en": "Wardrobes",
|
|
"group": "furniture",
|
|
"file": "svg/menu/wardrobe.svg"
|
|
},
|
|
{
|
|
"id": "washer",
|
|
"name_ru": "Стиральная машина",
|
|
"name_en": "Washing machine",
|
|
"group": "appliance",
|
|
"file": "svg/menu/washer.svg"
|
|
},
|
|
{
|
|
"id": "work_table",
|
|
"name_ru": "Рабочие столы",
|
|
"name_en": "Desks",
|
|
"group": "furniture",
|
|
"file": "svg/menu/work_table.svg"
|
|
}
|
|
],
|
|
"symbols": [
|
|
{
|
|
"id": "coffee_table",
|
|
"operation": "replace",
|
|
"name_ru": "Журнальный стол, прямоугольный",
|
|
"name_en": "Rectangular coffee table",
|
|
"group": "furniture",
|
|
"width_cm": 120,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/coffee_table.svg",
|
|
"menu_icon": "coffee_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "coffee_table_round",
|
|
"operation": "replace",
|
|
"name_ru": "Журнальный стол, круглый",
|
|
"name_en": "Round coffee table",
|
|
"group": "furniture",
|
|
"width_cm": 80,
|
|
"depth_cm": 80,
|
|
"back": "top",
|
|
"file": "svg/plan/coffee_table_round.svg",
|
|
"menu_icon": "coffee_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "coffee_table_oval",
|
|
"operation": "replace",
|
|
"name_ru": "Журнальный стол, овальный",
|
|
"name_en": "Oval coffee table",
|
|
"group": "furniture",
|
|
"width_cm": 120,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/coffee_table_oval.svg",
|
|
"menu_icon": "coffee_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "coffee_table_rounded",
|
|
"operation": "replace",
|
|
"name_ru": "Журнальный стол, скруглённый",
|
|
"name_en": "Rounded coffee table",
|
|
"group": "furniture",
|
|
"width_cm": 120,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/coffee_table_rounded.svg",
|
|
"menu_icon": "coffee_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "table_dining",
|
|
"operation": "replace",
|
|
"name_ru": "Обеденный стол, прямоугольный",
|
|
"name_en": "Rectangular dining table",
|
|
"group": "furniture",
|
|
"width_cm": 160,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/table_dining.svg",
|
|
"menu_icon": "dining_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "table_round",
|
|
"operation": "replace",
|
|
"name_ru": "Обеденный стол, круглый",
|
|
"name_en": "Round dining table",
|
|
"group": "furniture",
|
|
"width_cm": 110,
|
|
"depth_cm": 110,
|
|
"back": "top",
|
|
"file": "svg/plan/table_round.svg",
|
|
"menu_icon": "dining_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "table_dining_oval",
|
|
"operation": "replace",
|
|
"name_ru": "Обеденный стол, овальный",
|
|
"name_en": "Oval dining table",
|
|
"group": "furniture",
|
|
"width_cm": 180,
|
|
"depth_cm": 100,
|
|
"back": "top",
|
|
"file": "svg/plan/table_dining_oval.svg",
|
|
"menu_icon": "dining_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "table_dining_rounded",
|
|
"operation": "replace",
|
|
"name_ru": "Обеденный стол, скруглённый",
|
|
"name_en": "Rounded dining table",
|
|
"group": "furniture",
|
|
"width_cm": 160,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/table_dining_rounded.svg",
|
|
"menu_icon": "dining_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "desk",
|
|
"operation": "replace",
|
|
"name_ru": "Рабочий стол, прямоугольный",
|
|
"name_en": "Rectangular desk",
|
|
"group": "furniture",
|
|
"width_cm": 140,
|
|
"depth_cm": 70,
|
|
"back": "top",
|
|
"file": "svg/plan/desk.svg",
|
|
"menu_icon": "work_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "desk_corner",
|
|
"operation": "replace",
|
|
"name_ru": "Рабочий стол, угловой",
|
|
"name_en": "Corner desk",
|
|
"group": "furniture",
|
|
"width_cm": 160,
|
|
"depth_cm": 160,
|
|
"back": "top",
|
|
"file": "svg/plan/desk_corner.svg",
|
|
"menu_icon": "work_table",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "chair",
|
|
"operation": "replace",
|
|
"name_ru": "Стул",
|
|
"name_en": "Chair",
|
|
"group": "furniture",
|
|
"width_cm": 50,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/chair.svg",
|
|
"menu_icon": "chair",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "chair_bar",
|
|
"operation": "replace",
|
|
"name_ru": "Барный стул",
|
|
"name_en": "Bar stool",
|
|
"group": "furniture",
|
|
"width_cm": 45,
|
|
"depth_cm": 48,
|
|
"back": "top",
|
|
"file": "svg/plan/chair_bar.svg",
|
|
"menu_icon": "chair",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "armchair",
|
|
"operation": "replace",
|
|
"name_ru": "Кресло мягкое",
|
|
"name_en": "Soft armchair",
|
|
"group": "furniture",
|
|
"width_cm": 90,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/armchair.svg",
|
|
"menu_icon": "armchair",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "armchair_office",
|
|
"operation": "replace",
|
|
"name_ru": "Кресло офисное",
|
|
"name_en": "Office chair",
|
|
"group": "furniture",
|
|
"width_cm": 65,
|
|
"depth_cm": 65,
|
|
"back": "top",
|
|
"file": "svg/plan/armchair_office.svg",
|
|
"menu_icon": "armchair",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "sofa",
|
|
"operation": "replace",
|
|
"name_ru": "Диван двухместный",
|
|
"name_en": "Two-seat sofa",
|
|
"group": "furniture",
|
|
"width_cm": 180,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/sofa.svg",
|
|
"menu_icon": "sofa",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "sofa_three_seat",
|
|
"operation": "replace",
|
|
"name_ru": "Диван трёхместный",
|
|
"name_en": "Three-seat sofa",
|
|
"group": "furniture",
|
|
"width_cm": 240,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/sofa_three_seat.svg",
|
|
"menu_icon": "sofa",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "sofa_corner_right",
|
|
"operation": "replace",
|
|
"name_ru": "Угловой диван, правый",
|
|
"name_en": "Right sectional sofa",
|
|
"group": "furniture",
|
|
"width_cm": 260,
|
|
"depth_cm": 170,
|
|
"back": "top",
|
|
"file": "svg/plan/sofa_corner_right.svg",
|
|
"menu_icon": "sofa",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bed_single",
|
|
"operation": "replace",
|
|
"name_ru": "Кровать односпальная",
|
|
"name_en": "Single bed",
|
|
"group": "furniture",
|
|
"width_cm": 90,
|
|
"depth_cm": 200,
|
|
"back": "top",
|
|
"file": "svg/plan/bed_single.svg",
|
|
"menu_icon": "bed",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bed_double",
|
|
"operation": "replace",
|
|
"name_ru": "Кровать двуспальная",
|
|
"name_en": "Double bed",
|
|
"group": "furniture",
|
|
"width_cm": 160,
|
|
"depth_cm": 200,
|
|
"back": "top",
|
|
"file": "svg/plan/bed_double.svg",
|
|
"menu_icon": "bed",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "nightstand",
|
|
"operation": "replace",
|
|
"name_ru": "Тумба прикроватная",
|
|
"name_en": "Bedside table",
|
|
"group": "furniture",
|
|
"width_cm": 50,
|
|
"depth_cm": 40,
|
|
"back": "top",
|
|
"file": "svg/plan/nightstand.svg",
|
|
"menu_icon": "nightstand",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "cabinet_tv",
|
|
"operation": "replace",
|
|
"name_ru": "Тумба под телевизор",
|
|
"name_en": "TV cabinet",
|
|
"group": "furniture",
|
|
"width_cm": 140,
|
|
"depth_cm": 45,
|
|
"back": "top",
|
|
"file": "svg/plan/cabinet_tv.svg",
|
|
"menu_icon": "nightstand",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "cabinet_shoe",
|
|
"operation": "replace",
|
|
"name_ru": "Тумба для обуви",
|
|
"name_en": "Shoe cabinet",
|
|
"group": "furniture",
|
|
"width_cm": 80,
|
|
"depth_cm": 35,
|
|
"back": "top",
|
|
"file": "svg/plan/cabinet_shoe.svg",
|
|
"menu_icon": "nightstand",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "cabinet_sink",
|
|
"operation": "replace",
|
|
"name_ru": "Тумба под раковину",
|
|
"name_en": "Sink cabinet",
|
|
"group": "furniture",
|
|
"width_cm": 80,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/cabinet_sink.svg",
|
|
"menu_icon": "nightstand",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bookshelf",
|
|
"operation": "replace",
|
|
"name_ru": "Шкаф книжный",
|
|
"name_en": "Bookcase",
|
|
"group": "furniture",
|
|
"width_cm": 100,
|
|
"depth_cm": 35,
|
|
"back": "top",
|
|
"file": "svg/plan/bookshelf.svg",
|
|
"menu_icon": "wardrobe",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "wall_unit",
|
|
"operation": "replace",
|
|
"name_ru": "Шкаф-стенка",
|
|
"name_en": "Wall unit",
|
|
"group": "furniture",
|
|
"width_cm": 240,
|
|
"depth_cm": 45,
|
|
"back": "top",
|
|
"file": "svg/plan/wall_unit.svg",
|
|
"menu_icon": "wardrobe",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "wardrobe",
|
|
"operation": "replace",
|
|
"name_ru": "Шкаф гардеробный",
|
|
"name_en": "Wardrobe",
|
|
"group": "furniture",
|
|
"width_cm": 180,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/wardrobe.svg",
|
|
"menu_icon": "wardrobe",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "kitchen_floor",
|
|
"operation": "replace",
|
|
"name_ru": "Кухонный напольный модуль",
|
|
"name_en": "Kitchen floor module",
|
|
"group": "furniture",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/kitchen_floor.svg",
|
|
"menu_icon": "kitchen_cabinet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "kitchen_floor_corner",
|
|
"operation": "replace",
|
|
"name_ru": "Кухонный напольный угловой модуль",
|
|
"name_en": "Kitchen floor corner module",
|
|
"group": "furniture",
|
|
"width_cm": 90,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/kitchen_floor_corner.svg",
|
|
"menu_icon": "kitchen_cabinet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "kitchen_wall",
|
|
"operation": "replace",
|
|
"name_ru": "Кухонный навесной модуль",
|
|
"name_en": "Kitchen wall module",
|
|
"group": "furniture",
|
|
"width_cm": 60,
|
|
"depth_cm": 35,
|
|
"back": "top",
|
|
"file": "svg/plan/kitchen_wall.svg",
|
|
"menu_icon": "kitchen_cabinet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "kitchen_wall_corner",
|
|
"operation": "replace",
|
|
"name_ru": "Кухонный навесной угловой модуль",
|
|
"name_en": "Kitchen wall corner module",
|
|
"group": "furniture",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/kitchen_wall_corner.svg",
|
|
"menu_icon": "kitchen_cabinet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "shelf_floor",
|
|
"operation": "replace",
|
|
"name_ru": "Стеллаж напольный",
|
|
"name_en": "Floor shelving unit",
|
|
"group": "furniture",
|
|
"width_cm": 100,
|
|
"depth_cm": 35,
|
|
"back": "top",
|
|
"file": "svg/plan/shelf_floor.svg",
|
|
"menu_icon": "shelving",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "shelf_wall",
|
|
"operation": "replace",
|
|
"name_ru": "Полка настенная",
|
|
"name_en": "Wall shelf",
|
|
"group": "furniture",
|
|
"width_cm": 100,
|
|
"depth_cm": 25,
|
|
"back": "top",
|
|
"file": "svg/plan/shelf_wall.svg",
|
|
"menu_icon": "shelving",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "cooktop_two",
|
|
"operation": "replace",
|
|
"name_ru": "Варочная панель, 2 конфорки",
|
|
"name_en": "Two-burner cooktop",
|
|
"group": "appliance",
|
|
"width_cm": 30,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/cooktop_two.svg",
|
|
"menu_icon": "cooktop",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "stove",
|
|
"operation": "replace",
|
|
"name_ru": "Варочная панель, 4 конфорки",
|
|
"name_en": "Four-burner cooktop",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/stove.svg",
|
|
"menu_icon": "cooktop",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "tv",
|
|
"operation": "replace",
|
|
"name_ru": "Телевизор на подставке",
|
|
"name_en": "TV on stand",
|
|
"group": "appliance",
|
|
"width_cm": 120,
|
|
"depth_cm": 28,
|
|
"back": "top",
|
|
"file": "svg/plan/tv.svg",
|
|
"menu_icon": "tv",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "tv_wall",
|
|
"operation": "replace",
|
|
"name_ru": "Телевизор на кронштейне",
|
|
"name_en": "Wall-mounted TV",
|
|
"group": "appliance",
|
|
"width_cm": 120,
|
|
"depth_cm": 15,
|
|
"back": "top",
|
|
"file": "svg/plan/tv_wall.svg",
|
|
"menu_icon": "tv",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "toilet",
|
|
"operation": "replace",
|
|
"name_ru": "Унитаз напольный",
|
|
"name_en": "Floor-standing toilet",
|
|
"group": "sanitary",
|
|
"width_cm": 40,
|
|
"depth_cm": 70,
|
|
"back": "top",
|
|
"file": "svg/plan/toilet.svg",
|
|
"menu_icon": "toilet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "toilet_built_in",
|
|
"operation": "replace",
|
|
"name_ru": "Унитаз встроенный",
|
|
"name_en": "Built-in toilet",
|
|
"group": "sanitary",
|
|
"width_cm": 40,
|
|
"depth_cm": 55,
|
|
"back": "top",
|
|
"file": "svg/plan/toilet_built_in.svg",
|
|
"menu_icon": "toilet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bathtub",
|
|
"operation": "replace",
|
|
"name_ru": "Ванна прямоугольная",
|
|
"name_en": "Rectangular bathtub",
|
|
"group": "sanitary",
|
|
"width_cm": 170,
|
|
"depth_cm": 75,
|
|
"back": "top",
|
|
"file": "svg/plan/bathtub.svg",
|
|
"menu_icon": "bathtub",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bathtub_corner",
|
|
"operation": "replace",
|
|
"name_ru": "Ванна угловая",
|
|
"name_en": "Corner bathtub",
|
|
"group": "sanitary",
|
|
"width_cm": 140,
|
|
"depth_cm": 140,
|
|
"back": "top",
|
|
"file": "svg/plan/bathtub_corner.svg",
|
|
"menu_icon": "bathtub",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bidet",
|
|
"operation": "replace",
|
|
"name_ru": "Биде напольное",
|
|
"name_en": "Floor-standing bidet",
|
|
"group": "sanitary",
|
|
"width_cm": 40,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/bidet.svg",
|
|
"menu_icon": "bidet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "bidet_built_in",
|
|
"operation": "replace",
|
|
"name_ru": "Биде встроенное",
|
|
"name_en": "Built-in bidet",
|
|
"group": "sanitary",
|
|
"width_cm": 40,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/bidet_built_in.svg",
|
|
"menu_icon": "bidet",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "kitchen_sink",
|
|
"operation": "replace",
|
|
"name_ru": "Кухонная мойка одинарная",
|
|
"name_en": "Single kitchen sink",
|
|
"group": "sanitary",
|
|
"width_cm": 60,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/kitchen_sink.svg",
|
|
"menu_icon": "kitchen_sink",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "kitchen_sink_double",
|
|
"operation": "replace",
|
|
"name_ru": "Кухонная мойка двойная",
|
|
"name_en": "Double kitchen sink",
|
|
"group": "sanitary",
|
|
"width_cm": 90,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/kitchen_sink_double.svg",
|
|
"menu_icon": "kitchen_sink",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "fridge",
|
|
"operation": "replace",
|
|
"name_ru": "Холодильник",
|
|
"name_en": "Refrigerator",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 65,
|
|
"back": "top",
|
|
"file": "svg/plan/fridge.svg",
|
|
"menu_icon": "fridge",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "dishwasher",
|
|
"operation": "replace",
|
|
"name_ru": "Посудомоечная машина",
|
|
"name_en": "Dishwasher",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/dishwasher.svg",
|
|
"menu_icon": "dishwasher",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "washer",
|
|
"operation": "replace",
|
|
"name_ru": "Стиральная машина",
|
|
"name_en": "Washing machine",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/washer.svg",
|
|
"menu_icon": "washer",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "dryer",
|
|
"operation": "replace",
|
|
"name_ru": "Сушильная машина",
|
|
"name_en": "Dryer",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/dryer.svg",
|
|
"menu_icon": "dryer",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "ac",
|
|
"operation": "replace",
|
|
"name_ru": "Кондиционер",
|
|
"name_en": "Air conditioner",
|
|
"group": "appliance",
|
|
"width_cm": 90,
|
|
"depth_cm": 25,
|
|
"back": "top",
|
|
"file": "svg/plan/ac.svg",
|
|
"menu_icon": "air_conditioner",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "water_heater",
|
|
"operation": "replace",
|
|
"name_ru": "Бойлер",
|
|
"name_en": "Water heater",
|
|
"group": "appliance",
|
|
"width_cm": 45,
|
|
"depth_cm": 45,
|
|
"back": "top",
|
|
"file": "svg/plan/water_heater.svg",
|
|
"menu_icon": "boiler",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "shower",
|
|
"operation": "replace",
|
|
"name_ru": "Душ",
|
|
"name_en": "Shower",
|
|
"group": "sanitary",
|
|
"width_cm": 90,
|
|
"depth_cm": 90,
|
|
"back": "top",
|
|
"file": "svg/plan/shower.svg",
|
|
"menu_icon": "shower",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "sink",
|
|
"operation": "replace",
|
|
"name_ru": "Раковина",
|
|
"name_en": "Sink",
|
|
"group": "sanitary",
|
|
"width_cm": 60,
|
|
"depth_cm": 45,
|
|
"back": "top",
|
|
"file": "svg/plan/sink.svg",
|
|
"menu_icon": "sink",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "stairs",
|
|
"operation": "replace",
|
|
"name_ru": "Лестница",
|
|
"name_en": "Stairs",
|
|
"group": "other",
|
|
"width_cm": 100,
|
|
"depth_cm": 280,
|
|
"back": "top",
|
|
"file": "svg/plan/stairs.svg",
|
|
"menu_icon": "stairs",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "fireplace",
|
|
"operation": "replace",
|
|
"name_ru": "Камин",
|
|
"name_en": "Fireplace",
|
|
"group": "other",
|
|
"width_cm": 120,
|
|
"depth_cm": 40,
|
|
"back": "top",
|
|
"file": "svg/plan/fireplace.svg",
|
|
"menu_icon": "fireplace",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "plant",
|
|
"operation": "replace",
|
|
"name_ru": "Растение",
|
|
"name_en": "Plant",
|
|
"group": "other",
|
|
"width_cm": 40,
|
|
"depth_cm": 40,
|
|
"back": "top",
|
|
"file": "svg/plan/plant.svg",
|
|
"menu_icon": "plant",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "rug",
|
|
"operation": "replace",
|
|
"name_ru": "Ковёр",
|
|
"name_en": "Rug",
|
|
"group": "other",
|
|
"width_cm": 200,
|
|
"depth_cm": 140,
|
|
"back": "top",
|
|
"file": "svg/plan/rug.svg",
|
|
"menu_icon": "rug",
|
|
"notes": "Существующий публичный ID House Plan; меняются только рисунок и default-размер нового размещения."
|
|
},
|
|
{
|
|
"id": "computer",
|
|
"operation": "add",
|
|
"name_ru": "Компьютер",
|
|
"name_en": "Computer",
|
|
"group": "appliance",
|
|
"width_cm": 120,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/computer.svg",
|
|
"menu_icon": "computer",
|
|
"notes": "Новый ID для расширения встроенной библиотеки House Plan."
|
|
},
|
|
{
|
|
"id": "hood",
|
|
"operation": "add",
|
|
"name_ru": "Вытяжка",
|
|
"name_en": "Range hood",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 50,
|
|
"back": "top",
|
|
"file": "svg/plan/hood.svg",
|
|
"menu_icon": "hood",
|
|
"notes": "Новый ID для расширения встроенной библиотеки House Plan."
|
|
},
|
|
{
|
|
"id": "oven",
|
|
"operation": "add",
|
|
"name_ru": "Духовка",
|
|
"name_en": "Oven",
|
|
"group": "appliance",
|
|
"width_cm": 60,
|
|
"depth_cm": 60,
|
|
"back": "top",
|
|
"file": "svg/plan/oven.svg",
|
|
"menu_icon": "oven",
|
|
"notes": "Новый ID для расширения встроенной библиотеки House Plan."
|
|
},
|
|
{
|
|
"id": "cactus",
|
|
"operation": "add",
|
|
"name_ru": "Кактус",
|
|
"name_en": "Cactus",
|
|
"group": "other",
|
|
"width_cm": 70,
|
|
"depth_cm": 120,
|
|
"back": "top",
|
|
"file": "svg/plan/cactus.svg",
|
|
"menu_icon": "plant",
|
|
"notes": "Новый ID для расширения встроенной библиотеки House Plan."
|
|
}
|
|
]
|
|
}
|