From 61b36328143edb4b7d4bd879b249dedd6b8133c1 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Mon, 18 May 2020 12:20:45 +0200 Subject: [PATCH] add hidden passage framework --- src/gui/quicklinks.js | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/gui/quicklinks.js b/src/gui/quicklinks.js index cea5904c230..d70fe43c525 100644 --- a/src/gui/quicklinks.js +++ b/src/gui/quicklinks.js @@ -42,8 +42,13 @@ App.UI.quickMenu = (function() { */ let currentPassageDOM = null; + // true means hidden + const hiddenPassages = cleanPassageMapping({ + "Cellblock": () => !V.cellblock + }); + // setup hotkeys list, upper/lower case is important! - const hotkeys = cleanHotkeys({ + const hotkeys = cleanPassageMapping({ Main: "m", "Manage Personal Affairs": "x" }); @@ -137,7 +142,7 @@ App.UI.quickMenu = (function() { const fragment = document.createDocumentFragment(); for (const passage in group) { if (group[passage] === true) { - fragment.append(menuLink(passage)); + addMenuLink(fragment, passage); } else { fragment.append(generateCategory(passage, group[passage])); } @@ -148,7 +153,7 @@ App.UI.quickMenu = (function() { function generateCategory(name, group) { const toggle = document.createElement("div"); toggle.classList.add("toggle"); - toggle.append(menuLink(name, true)); + addMenuLink(toggle, name, true); const content = document.createElement("div"); content.classList.add("content"); content.append(generateLinkList(group)); @@ -163,8 +168,18 @@ App.UI.quickMenu = (function() { return wrapper; } - function menuLink(passage, toggle = false) { + function addMenuLink(container, passage, toggle = false) { + // passage is hidden + let hidden = false; + if (hiddenPassages.hasOwnProperty(passage) && hiddenPassages[passage]()) { + if (!toggle) { + return; + } + hidden = true; + } + // we show some kind of text/link const div = document.createElement("div"); + container.append(div); if (!toggle) { div.classList.add("menu-link"); } @@ -172,12 +187,12 @@ App.UI.quickMenu = (function() { if (State.passage === passage) { div.append(passage); currentPassageDOM = div; - return div; + return; } // That is not a passage we can safely jump to, it's a deco element - if (!jumpTo.includes(passage)) { + if (hidden || !jumpTo.includes(passage)) { div.append(passage); - return div; + return; } // Create link const a = document.createElement("a"); @@ -189,7 +204,6 @@ App.UI.quickMenu = (function() { if (hotkeys[passage]) { div.append(" ", App.UI.DOM.makeElement("span", `[${hotkeys[passage]}]`, "hotkey")); } - return div; } function addOtherCategory(layout) { @@ -219,18 +233,18 @@ App.UI.quickMenu = (function() { } /** - * Cleans out all keys that are not contained in jumpTo and therefore not considered safe. + * Cleans out all mappings that are not contained in jumpTo and therefore not considered safe. * * @param {object} keys * @returns {object} */ - function cleanHotkeys(keys) { + function cleanPassageMapping(keys) { const result = {}; for (const key in keys) { if (jumpTo.includes(key)) { result[key] = keys[key]; } else { - console.log("Found hotkey to unsafe passage: " + key); + console.log("Found mapping to unsafe passage: " + key + " to " + keys[key]); } } return result; -- GitLab