switch from main calling initializers to modules registering for load callback
This commit is contained in:
parent
b69bcacb78
commit
880017ddf3
|
|
@ -1,10 +1,11 @@
|
||||||
import { DomList } from "./dom-list.js";
|
import { DomList } from "./dom-list.js";
|
||||||
import { addEventToElement, setText } from "./dom-utils.js";
|
import { addEventToElement, setText } from "./dom-utils.js";
|
||||||
import { emitEvent, listenTo } from "./events.js";
|
import { emitEvent, listenTo } from "./events.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
export function initializeDialogs() {
|
registerLoadCallback(() => {
|
||||||
listenTo("fileLoad:chooseDesign", designChoiceDialog);
|
listenTo("fileLoad:chooseDesign", designChoiceDialog);
|
||||||
}
|
})
|
||||||
|
|
||||||
function designChoiceDialog(e) {
|
function designChoiceDialog(e) {
|
||||||
const dialog = document.querySelector('[data-dialog="fileLoad:chooseDesign"]');
|
const dialog = document.querySelector('[data-dialog="fileLoad:chooseDesign"]');
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,13 @@ import { findFullEntry, stripEntryToMinimums } from "./ncpf-utils.js";
|
||||||
import { getPlannerMultiblockSize, getPlannerMultiblockType, loadPlanner, readPlannerTiles } from "./planner.js";
|
import { getPlannerMultiblockSize, getPlannerMultiblockType, loadPlanner, readPlannerTiles } from "./planner.js";
|
||||||
import { getAtlasIndexFromMetadata, getAtlasMetadata } from "./atlas.js";
|
import { getAtlasIndexFromMetadata, getAtlasMetadata } from "./atlas.js";
|
||||||
import { resetSolver } from "./solver.js";
|
import { resetSolver } from "./solver.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
export function initializeFileEvents() {
|
registerLoadCallback(() => {
|
||||||
listenTo("file:load", () => showOpenFileDialog());
|
listenTo("file:load", () => showOpenFileDialog());
|
||||||
listenTo("file:new", () => {});
|
listenTo("file:new", () => {});
|
||||||
listenTo("file:save", () => saveFile("test"));
|
listenTo("file:save", () => saveFile("test"));
|
||||||
}
|
});
|
||||||
|
|
||||||
export function showOpenFileDialog() {
|
export function showOpenFileDialog() {
|
||||||
const input = document.createElement("input");
|
const input = document.createElement("input");
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,18 @@
|
||||||
import { loadConfiguration } from "./configuration.js";
|
import { loadConfiguration } from "./configuration.js";
|
||||||
import { initializeDialogs } from "./dialogs.js";
|
|
||||||
import { addEventToButton, addEventToInput, debounce, getElements } from "./dom-utils.js";
|
import { addEventToButton, addEventToInput, debounce, getElements } from "./dom-utils.js";
|
||||||
import { awaitEvent, emitEvent, listenTo } from "./events.js";
|
import { awaitEvent, emitEvent, listenTo } from "./events.js";
|
||||||
import { initializeFileEvents, loadExampleFile, saveFile, showOpenFileDialog } from "./files.js";
|
import { loadExampleFile } from "./files.js";
|
||||||
import { initializePlanner } from "./planner.js";
|
|
||||||
import { initializeMenuResizing } from "./resize-menus.js";
|
|
||||||
import { getState, setState, STATE } from "./state.js";
|
import { getState, setState, STATE } from "./state.js";
|
||||||
import { initializeTooltips } from "./tooltip.js";
|
|
||||||
import { initializeMenuBar } from "./menu-bar.js";
|
let loadCallbacks = [];
|
||||||
|
export function registerLoadCallback(cb) {
|
||||||
|
queueMicrotask(() => {
|
||||||
|
loadCallbacks.push(cb);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function runLoadCallbacks() {
|
||||||
|
loadCallbacks.forEach(cb => cb());
|
||||||
|
}
|
||||||
|
|
||||||
window.addEventListener("load", () => {
|
window.addEventListener("load", () => {
|
||||||
emitEvent("setup-start");
|
emitEvent("setup-start");
|
||||||
|
|
@ -57,12 +62,7 @@ window.addEventListener("load", () => {
|
||||||
|
|
||||||
listenTo("config:end", () => setState(STATE.planning));
|
listenTo("config:end", () => setState(STATE.planning));
|
||||||
|
|
||||||
initializeFileEvents();
|
runLoadCallbacks();
|
||||||
initializePlanner();
|
|
||||||
initializeMenuResizing();
|
|
||||||
initializeTooltips();
|
|
||||||
initializeMenuBar();
|
|
||||||
initializeDialogs();
|
|
||||||
|
|
||||||
emitEvent("setup-end");
|
emitEvent("setup-end");
|
||||||
|
|
||||||
|
|
@ -70,5 +70,5 @@ window.addEventListener("load", () => {
|
||||||
|
|
||||||
awaitEvent("config:end").then(() => loadExampleFile("tiny reactor"));
|
awaitEvent("config:end").then(() => loadExampleFile("tiny reactor"));
|
||||||
// awaitEvent("config:end").then(() => loadExampleFile("multi-reactor"));
|
// awaitEvent("config:end").then(() => loadExampleFile("multi-reactor"));
|
||||||
awaitEvent("solver:reset:done").then(() => emitEvent("file:save"));
|
// awaitEvent("solver:reset:done").then(() => emitEvent("file:save"));
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
import { positionAsTooltip } from "./tooltip.js";
|
import { positionAsTooltip } from "./tooltip.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
let activeMenuBar = null;
|
let activeMenuBar = null;
|
||||||
|
|
||||||
export function initializeMenuBar() {
|
registerLoadCallback(() => {
|
||||||
document.querySelectorAll(".menu-bar").forEach(menuBar => {
|
document.querySelectorAll(".menu-bar").forEach(menuBar => {
|
||||||
menuBar.querySelectorAll("button").forEach(button => {
|
menuBar.querySelectorAll("button").forEach(button => {
|
||||||
button.setAttribute("tabindex", "-1");
|
button.setAttribute("tabindex", "-1");
|
||||||
|
|
@ -66,7 +67,7 @@ export function initializeMenuBar() {
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: keyboard navigation with alt and arrow keys
|
// TODO: keyboard navigation with alt and arrow keys
|
||||||
}
|
});
|
||||||
|
|
||||||
|
|
||||||
function handleGlobalClick() {
|
function handleGlobalClick() {
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import { initialize3dArray } from "./js-utils.js";
|
||||||
import { recall, save } from "./storage.js";
|
import { recall, save } from "./storage.js";
|
||||||
import { createTooltip, tooltipDataToPlain } from "./tooltip.js";
|
import { createTooltip, tooltipDataToPlain } from "./tooltip.js";
|
||||||
import { lookupFromMetadata, resolveBlockName } from "./ncpf-utils.js";
|
import { lookupFromMetadata, resolveBlockName } from "./ncpf-utils.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
const zoomOptions = [ 0.5, 1, 2, 3, 4, 5 ];
|
const zoomOptions = [ 0.5, 1, 2, 3, 4, 5 ];
|
||||||
const zoomDefault = 2;
|
const zoomDefault = 2;
|
||||||
|
|
@ -17,7 +18,7 @@ let multiblockSize = [9, 7, 9]; // width (screen x), height (xy grids), depth (s
|
||||||
let multiblockType = "nuclearcraft:overhaul_sfr";
|
let multiblockType = "nuclearcraft:overhaul_sfr";
|
||||||
let activeItem = -1;
|
let activeItem = -1;
|
||||||
|
|
||||||
export function initializePlanner() {
|
registerLoadCallback(() => {
|
||||||
listenTo("config:end", buildBlockPicker);
|
listenTo("config:end", buildBlockPicker);
|
||||||
listenTo("config:end", buildPlanner);
|
listenTo("config:end", buildPlanner);
|
||||||
|
|
||||||
|
|
@ -84,7 +85,7 @@ export function initializePlanner() {
|
||||||
console.log("Suppressing hover:", suppressHover);
|
console.log("Suppressing hover:", suppressHover);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
|
|
||||||
function buildBlockPicker() {
|
function buildBlockPicker() {
|
||||||
const filter = Filter.fromInput("block-picker:filter");
|
const filter = Filter.fromInput("block-picker:filter");
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { recall, save } from "./storage.js";
|
import { recall, save } from "./storage.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
export function initializeMenuResizing() {
|
registerLoadCallback(() => {
|
||||||
const handles = document.querySelectorAll('[data-resize]');
|
const handles = document.querySelectorAll('[data-resize]');
|
||||||
handles.forEach(handle => {
|
handles.forEach(handle => {
|
||||||
handle.addEventListener("mousedown", startResize);
|
handle.addEventListener("mousedown", startResize);
|
||||||
|
|
@ -9,7 +10,7 @@ export function initializeMenuResizing() {
|
||||||
document.body.style.setProperty(`--${handle.dataset.resize}-size`, stored);
|
document.body.style.setProperty(`--${handle.dataset.resize}-size`, stored);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
|
|
||||||
function startResize(e) {
|
function startResize(e) {
|
||||||
window.addEventListener("mouseup", endResize);
|
window.addEventListener("mouseup", endResize);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
import { configuration } from "./configuration.js";
|
import { configuration } from "./configuration.js";
|
||||||
import { emitEvent } from "./events.js";
|
import { emitEvent } from "./events.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
|
registerLoadCallback(() => {
|
||||||
|
});
|
||||||
|
|
||||||
export function resetSolver(design = undefined) {
|
export function resetSolver(design = undefined) {
|
||||||
console.log("solver", configuration, design);
|
console.log("solver", configuration, design);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { debounce } from "./dom-utils.js";
|
import { debounce } from "./dom-utils.js";
|
||||||
import { emitEvent, listenTo } from "./events.js";
|
import { emitEvent, listenTo } from "./events.js";
|
||||||
|
import { registerLoadCallback } from "./main.js";
|
||||||
|
|
||||||
const tooltips = {};
|
const tooltips = {};
|
||||||
let tooltipsCounter = 0;
|
let tooltipsCounter = 0;
|
||||||
|
|
@ -7,7 +8,7 @@ let lastCoordinates = null;
|
||||||
let suppressTooltips = false;
|
let suppressTooltips = false;
|
||||||
let activeTooltipTarget = null;
|
let activeTooltipTarget = null;
|
||||||
|
|
||||||
export function initializeTooltips() {
|
registerLoadCallback(() => {
|
||||||
document.querySelectorAll("[data-retain-tooltip-hover]").forEach(elem =>
|
document.querySelectorAll("[data-retain-tooltip-hover]").forEach(elem =>
|
||||||
elem.addEventListener("mousemove", e => {
|
elem.addEventListener("mousemove", e => {
|
||||||
if (lastCoordinates !== null) {
|
if (lastCoordinates !== null) {
|
||||||
|
|
@ -40,7 +41,7 @@ export function initializeTooltips() {
|
||||||
suppressTooltips = !suppressTooltips;
|
suppressTooltips = !suppressTooltips;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
|
|
||||||
export function createTooltip(data) {
|
export function createTooltip(data) {
|
||||||
const id = tooltipsCounter;
|
const id = tooltipsCounter;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue