www.spaceplanner.app

Web client to the spaceplanner API
git clone git://jacobedwards.org/www.spaceplanner.app
Log | Files | Refs

commit 3250f0295494b16dbf273d302c2167f182b930e9
parent 940bff970f79ab15ce4b3055c0ca689bb6f6bee9
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date:   Sat, 21 Sep 2024 16:12:54 -0700

Fix furniture menu

- Provide a default for various parameters if they're undefined
  (usually an empty string or 0)
- Update type and variety initialization to fix unexpected behavior

Diffstat:
Mfiles/floorplans/floorplan/main.js | 27+++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js @@ -772,15 +772,21 @@ function furnitureMenuX(editor, pointOrID) { } else if (typeof pointOrID === "object") { p = pointOrID } - let type = defKey(editor.furniture_types) - console.debug("furnitureMenu", "default type", type) - let v = def(editor.furniture_types[type].varieties) + let type = "any" + let vars = editor.furniture_types[type].varieties + let v + if (def(vars)) { + v = def(vars) + } else { + let s = editor.units.get("inch", 32) + v = { width: s, depth: s } + } params = { x: p.x, y: p.y, type, - width: v.width ?? 9600, - depth: v.depth ?? 9600, + width: v.width, + depth: v.depth, name: null } @@ -788,12 +794,12 @@ function furnitureMenuX(editor, pointOrID) { } let items = [ - menuItem("name", "Name", { attributes: { value: params.name } }), + menuItem("name", "Name", { attributes: { value: params.name ?? "" } }), menuItem("type", "Type", { break: false, enum: editor.furniture_types, attributes: { value: params.type, required: true } }), menuItem("variety", "Variety", { enum: editor.furniture_types[params.type].varieties, attributes: { value: editor.varietyFrom(params) } }), menuItem("width", "Width", { attributes: { value: params.width, required: true } }), menuItem("depth", "Depth", { attributes: { value: params.depth, required: true } }), - menuItem("angle", "Angle", { attributes: { value: params.angle, min: 0, max: 359, type: "number", required: true } }), + menuItem("angle", "Angle", { attributes: { value: params.angle ?? 0, min: 0, max: 359, type: "number", required: true } }), menuItem("done", null, { attributes: { value: "Done", type: "submit" }}) ] let keys = {} @@ -812,7 +818,7 @@ function furnitureMenuX(editor, pointOrID) { params.depth = items[keys.depth].input.value = v.depth editor.addMappedFurniture(params, id) } - const newVariety = function() { + const newVariety = function(init) { let vars = editor.furniture_types[items[keys.type].input.value].varieties if (vars == undefined) { items[keys.variety].container.classList.add("hidden") @@ -824,7 +830,7 @@ function furnitureMenuX(editor, pointOrID) { items[keys.variety].container.replaceWith(c) items[keys.variety] = v items[keys.variety].input.value = editor.varietyFrom(params) - fromVariety(items[keys.type].input.value) + fromVariety(items[keys.type].input.value, init ? null : defKey(vars)) c.addEventListener("change", function(ev) { fromVariety(items[keys.type].input.value, ev.target.value) @@ -832,7 +838,8 @@ function furnitureMenuX(editor, pointOrID) { } let menu = makeMenu(items) - newVariety() + items[keys.type].input.value = params.type + newVariety(true) items[keys.type].input.addEventListener("change", function(ev) { newVariety() })