www.spaceplanner.app

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

commit 1c0c3db6e18930dcb14eaff020ec797c704ea74c
parent 03164ff078c7d1f7ecaaf5946fa8516ce11a4588
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date:   Sun, 13 Oct 2024 18:19:15 -0700

Alter variety input behavior in furniture menu

Now if there's only one variety, it's a "Reset" button instead of
a selection menu. This is mostly so that for furniture without
multiple varieties, you don't have to open the menu just to check.

Diffstat:
Mfiles/floorplans/floorplan/main.js | 35++++++++++++++++++++++++++++-------
1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js @@ -960,7 +960,7 @@ function furnitureMenuX(editor, pointOrID) { menuItem("name", "Name", { attributes: { value: params.name ?? "" } }), menuItem("type", "Type", { break: false, enum: editor.furniture_types, attributes: { value: params.type, required: true } }), menuItem("style", "Style"), - menuItem("variety", "Variety", { enum: editor.furniture_types[params.type].varieties, attributes: { value: editor.varietyFrom(params) } }), + menuItem("variety", "Variety"), menuItem("width", "Width", { attributes: { value: userLength(editor, params.width), required: true } }), menuItem("depth", "Depth", { attributes: { value: userLength(editor, params.depth), required: true } }), menuItem("angle", "Angle", { attributes: { value: params.angle ?? 0, min: 0, max: 359, step: 1, type: "number", required: true } }) @@ -990,16 +990,37 @@ function furnitureMenuX(editor, pointOrID) { fromVariety() return } - let v = menuItem("variety", "Variety", { enum: vars }) + + let cnt = 0 + for (let k in vars) { + if (++cnt > 1) { + break + } + } + + let v + if (cnt === 1) { + v = menuItem("variety", "Variety", { attributes: { type: "button", value: "Reset" } }) + } else { + v = menuItem("variety", "Variety", { enum: vars, attributes: { value: editor.varietyFrom(params) } }) + } let c = makeItem(v) items[keys.variety].container.replaceWith(c) items[keys.variety] = v - items[keys.variety].input.value = editor.varietyFrom(params) - fromVariety(items[keys.type].input.value, init ? null : defKey(vars)) + if (cnt > 1) { + items[keys.variety].input.value = editor.varietyFrom(params) + } - c.addEventListener("input", function(ev) { - fromVariety(items[keys.type].input.value, ev.target.value) - }) + fromVariety(items[keys.type].input.value, init ? null : defKey(vars)) + if (cnt > 1) { + c.addEventListener("input", function(ev) { + fromVariety(items[keys.type].input.value, ev.target.value) + }) + } else { + c.addEventListener("click", function() { + fromVariety(items[keys.type].input.value, defKey(vars)) + }) + } } const newStyle = function() { let typeStyles = styles(params.type)