commit fa45914c76bb80618f9c40f7af5a818ec53347c1
parent ab714f190ba71e8dd0c67dfc1fb661fc4a4c5980
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date: Wed, 18 Sep 2024 12:29:03 -0700
Change how furniture editing works
The furniture menu is now opened when furniture is selected, there
is no longer a cancel button, and escaping does not cancel.
I'm removing cancel in part because it wasn't working and I didn't
want to fix it, and also because I didn't think added enough value
to warrent it's existence.
Diffstat:
1 file changed, 19 insertions(+), 27 deletions(-)
diff --git a/files/floorplans/floorplan/main.js b/files/floorplans/floorplan/main.js
@@ -187,17 +187,7 @@ function selectHandler(event, editor, state) {
}
)
} else {
- c.appendChild(
- ui.input("edit", "Edit selected furniture", {
- attributes: {
- type: "button",
- value: "Edit furniture"
- },
- handlers: { click: function() {
- document.body.appendChild(furnitureMenu(editor, fmaps[0]))
- }}
- })
- )
+ furnitureMenu(editor, fmaps[0])
}
if (old) {
@@ -698,7 +688,7 @@ function furnitureHandler(ev, editor, state) {
handled(ev)
let p = editor.draw.point(ev.clientX, ev.clientY)
state.timeout = setTimeout(function() {
- state.menu = document.body.appendChild(furnitureMenu(editor, p))
+ furnitureMenu(editor, p)
}, 350)
return
} else if (ev.type === "mouseup" && state.timeout != undefined) {
@@ -712,7 +702,7 @@ function furnitureHandler(ev, editor, state) {
}
if (ev.type === "dblclick") {
handled(ev)
- document.body.appendChild(furnitureMenu(editor, lib.getID(sel[0])))
+ furnitureMenu(editor, lib.getID(sel[0]))
} else if (ev.type === "mousedown") {
handled(ev)
state.moving = sel[0]
@@ -755,6 +745,17 @@ function enumSelection(input, values, selected) {
}
function furnitureMenu(editor, pointOrID) {
+ let oldMenu = document.getElementById("furniture_menu")
+ let menu = furnitureMenuX(editor, pointOrID)
+ menu.id = "furniture_menu"
+ if (oldMenu) {
+ oldMenu.replaceWith(menu)
+ } else {
+ document.body.append(menu)
+ }
+}
+
+function furnitureMenuX(editor, pointOrID) {
const def = function(obj) {
return obj[defKey(obj)]
}
@@ -803,7 +804,6 @@ function furnitureMenu(editor, pointOrID) {
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("cancel", null, { attributes: { value: "Cancel", type: "button" }}),
menuItem("done", null, { attributes: { value: "Done", type: "submit" }})
]
let keys = {}
@@ -812,7 +812,7 @@ function furnitureMenu(editor, pointOrID) {
}
const fromVariety = function(type, variety) {
- console.debug(`Setting with and depth to ${variety} ${type}`)
+ console.log(`Setting with and depth to ${variety} ${type}`)
if (variety == null) {
return
}
@@ -846,11 +846,6 @@ function furnitureMenu(editor, pointOrID) {
items[keys.type].input.addEventListener("change", function(ev) {
newVariety()
})
- items[keys.cancel].input.addEventListener("click", function(ev) {
- handled(ev)
- editor.undo()
- menu.remove()
- })
menu.addEventListener("change", function(ev) {
handled(ev)
try {
@@ -866,16 +861,13 @@ function furnitureMenu(editor, pointOrID) {
throw err
}
})
- menu.addEventListener("submit", function(ev) {
+ let commitHandler = function(ev) {
handled(ev)
editor.finishAction()
menu.remove()
- })
- menu.addEventListener("escape", function(ev) {
- handled(ev)
- editor.undo()
- menu.remove()
- })
+ }
+ menu.addEventListener("submit", commitHandler)
+ menu.addEventListener("escape", commitHandler)
return menu
}