mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 16:38:31 +00:00
- room label becomes a card: name on top, optional metrics below (temperature / humidity / avg zigbee / lights), four checkboxes in space settings, all off by default; lights render On/Off or '1 of 3' - areaHum + areaLightStats pure helpers (+3 unit tests, 90 total) - resize via corner handles in the Plan editor (hover), uniform 0.5-3x, scale stored as layout k next to the position; drag preserves it - fix latent v1.25 regression: draggable HTML labels were never rendered in the Plan editor (static SVG only) — real name-only cards now render there, draggable and resizable - repair merge/split smokes still calling removed _toggleMarkup - validation.py: 4 label_* bools; smoke_room_cards.mjs; docs same-commit
22 lines
1.4 KiB
JavaScript
22 lines
1.4 KiB
JavaScript
// Split now works on a non-grid-aligned room (imported/legacy polygons).
|
|
import { launch } from './serve.mjs';
|
|
const { page, browser } = await launch();
|
|
const R = (nx, ny) => page.evaluate(([nx, ny]) => {
|
|
const c = window.__card; const H = 1000 / c._curSpaceCfg.aspect; return [nx * 1000, ny * H];
|
|
}, [nx, ny]);
|
|
const out = {};
|
|
await page.evaluate(()=>{const c=window.__card; if(!c._markup)c._setMode('plan'); c._tool='split';});
|
|
// living room (r1) has walls at y=0.05 which are NOT grid nodes; click near the wall
|
|
await page.evaluate((p)=>window.__card._splitClick(p), await R(0.3,0.3)); // pick living
|
|
await page.evaluate((p)=>window.__card._splitClick(p), await R(0.3,0.052)); // near top wall (off grid)
|
|
await page.evaluate((p)=>window.__card._splitClick(p), await R(0.3,0.58)); // near bottom wall
|
|
out.pending = await page.evaluate(()=>!!window.__card._pendingSplit);
|
|
out.dialog = await page.evaluate(()=>!!window.__card._roomDialog);
|
|
// accidental click in the middle of the room must NOT become a wall point
|
|
await page.evaluate(()=>{const c=window.__card; c._roomDialog=false; c._pendingSplit=null; c._splitSel=null;});
|
|
await page.evaluate((p)=>window.__card._splitClick(p), await R(0.3,0.3)); // pick again
|
|
await page.evaluate((p)=>window.__card._splitClick(p), await R(0.3,0.3)); // centre click = miss
|
|
out.centreRefused = await page.evaluate(()=>window.__card._splitSel?.a == null);
|
|
console.log(JSON.stringify(out));
|
|
await browser.close();
|