www.spaceplanner.app

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

commit 54acb0762061fdef3329ae1ff12c9d24fa39d913
parent 1c0c3db6e18930dcb14eaff020ec797c704ea74c
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date:   Sun, 13 Oct 2024 18:29:32 -0700

Fix furniture menu variety Reset button

Fix the button's value being overwritten and also disable to reset
button when it wouldn't have any effect.

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

diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js @@ -1002,15 +1002,12 @@ function furnitureMenuX(editor, pointOrID) { if (cnt === 1) { v = menuItem("variety", "Variety", { attributes: { type: "button", value: "Reset" } }) } else { - v = menuItem("variety", "Variety", { enum: vars, attributes: { value: editor.varietyFrom(params) } }) + v = menuItem("variety", "Variety", { enum: vars }) } let c = makeItem(v) items[keys.variety].container.replaceWith(c) items[keys.variety] = v - if (cnt > 1) { - items[keys.variety].input.value = editor.varietyFrom(params) - } - + updateVariety() fromVariety(items[keys.type].input.value, init ? null : defKey(vars)) if (cnt > 1) { c.addEventListener("input", function(ev) { @@ -1019,6 +1016,7 @@ function furnitureMenuX(editor, pointOrID) { } else { c.addEventListener("click", function() { fromVariety(items[keys.type].input.value, defKey(vars)) + updateVariety() }) } } @@ -1035,6 +1033,24 @@ function furnitureMenuX(editor, pointOrID) { } } } + const updateVariety = function() { + let vars = editor.furniture_types[params.type].varieties + let cnt = 0 + for (let k in vars) { + if (++cnt > 1) { + break + } + } + if (cnt > 1) { + items[keys.variety].input.value = editor.varietyFrom(params) + } else if (cnt === 1) { + if (editor.varietyFrom(params)) { + items[keys.variety].input.setAttribute("disabled", true) + } else { + items[keys.variety].input.removeAttribute("disabled") + } + } + } let menu = makeMenu(items) items[keys.type].input.value = params.type @@ -1056,7 +1072,7 @@ function furnitureMenuX(editor, pointOrID) { } ev.target.reportValidity() params[ev.target.name] = u - items[keys.variety].input.value = editor.varietyFrom(params) + updateVariety() } else { if (ev.target.name === "style" && ev.target.value === "default") { params[ev.target.name] = null