diff --git a/js/controllers/menu_controller.js b/js/controllers/menu_controller.js new file mode 100644 index 0000000..e516dec --- /dev/null +++ b/js/controllers/menu_controller.js @@ -0,0 +1,78 @@ +// Global ATON +import { Controller } from "@hotwired/stimulus" +import AppState from "../state.js"; + +const html = String.raw; +const domParser = new DOMParser; + +export default class extends Controller { + static targets = ['trigger', 'layers', 'ontology']; + + connect() { + console.log('#menu controller connected'); + } + /** + * Open settings panel + * @param {Event} event + */ + toggleMenu(event) { + ATON.UI.setSidePanelRight(); + ATON.UI.showSidePanel({header: 'Menu'}); + this.#buildMenuPanel(ATON.UI.elSidePanel); + this.#buildLayersMenu(AppState.normalizedNodes, this.layersTarget); + } + /** + * @param {Event} event + */ + toggleNode(event) { + /** + * The node's id + * @type {string} + */ + const id = event.params.node; + const status = event.target.checked; + ATON.getSceneNode(id).toggle(status); + AppState.normalizedNodes.find(n => n.id === id).active = status; + } + /** + * Clone a diff --git a/scenes/ssgp/index.js b/scenes/ssgp/index.js index f28009b..9691181 100644 --- a/scenes/ssgp/index.js +++ b/scenes/ssgp/index.js @@ -2,7 +2,6 @@ import { openScene } from "../../js/scene.js"; import { config } from "../../config.js"; import AppState from "../../js/state.js"; import { normalizeNodes } from "../../js/utils/nodeUtils.js"; -import { initUI } from "../../js/ui.js"; import { initStimulus } from "../../js/utils/stimulus.js"; initStimulus(); @@ -12,4 +11,3 @@ const marker = config.markers.find(m => m.id === 'ssgp'); AppState.normalizedNodes = normalizeNodes(marker.nodes); openScene(marker, AppState.normalizedNodes); -initUI(location.pathname + '/ontology.json');