move metadata to it's own file

This commit is contained in:
CodedSakura 2026-07-27 15:04:55 +02:00
parent c958112590
commit 521ff4e757
8 changed files with 50 additions and 52 deletions

View File

@ -1,5 +1,5 @@
import { deleteTooltip } from "./tooltip.js"; import { deleteTooltip } from "./tooltip.js";
import { deleteSolverMetadata } from "./solver.js"; import { deleteSolverMetadata } from "./metadata.js";
export class DomList { export class DomList {
list; list;

View File

@ -9,9 +9,10 @@ import {
readPlannerCellData readPlannerCellData
} from "./planner.js"; } from "./planner.js";
import { getAtlasIndexFromMetadata, getAtlasMetadata } from "./atlas.js"; import { getAtlasIndexFromMetadata, getAtlasMetadata } from "./atlas.js";
import { getSolverMetadata, resetSolver } from "./solver.js"; import { resetSolver } from "./solver.js";
import { registerLoadCallback } from "./main.js"; import { registerLoadCallback } from "./main.js";
import { DevError, UserError } from "./errors.js"; import { DevError, UserError } from "./errors.js";
import { getSolverMetadata } from "./metadata.js";
registerLoadCallback(() => { registerLoadCallback(() => {
listenTo("file:load", () => showOpenFileDialog(({ data, filename }) => loadFile(data, filename))); listenTo("file:load", () => showOpenFileDialog(({ data, filename }) => loadFile(data, filename)));

View File

@ -10,6 +10,7 @@ import { awaitEvent, emitEvent, listenTo } from "./events.js";
import "./files.js" import "./files.js"
import "./js-utils.js" import "./js-utils.js"
import "./menu-bar.js"; import "./menu-bar.js";
import "./metadata.js";
import "./ncpf-utils.js"; import "./ncpf-utils.js";
import "./planner.js"; import "./planner.js";
import "./planner-resize.js"; import "./planner-resize.js";

38
scripts/metadata.js Normal file
View File

@ -0,0 +1,38 @@
const solverMetadata = {};
let solverMetadataCounter = 0;
function createSolverMetadata(data) {
const id = solverMetadataCounter;
solverMetadata[id] = data;
solverMetadataCounter++;
return id;
}
export function setSolverMetadata(domNode, data) {
if (domNode.dataset.solverMetadata) {
solverMetadata[Number(domNode.dataset.solverMetadata)] = data;
return;
}
domNode.dataset.solverMetadata = createSolverMetadata(data).toString(10);
}
export function getSolverMetadata(id) {
if (typeof id === "object") {
// assume DOM element
if (id.dataset && id.dataset.solverMetadata) {
return getSolverMetadata(id.dataset.solverMetadata);
}
return null;
}
if (typeof id === "string") {
return getSolverMetadata(Number(id));
}
return solverMetadata[id];
}
export function deleteSolverMetadata(id) {
if (typeof id === "object") {
// assume DOM object
if (id.dataset && id.dataset.solverMetadata) {
return deleteSolverMetadata(id.dataset.solverMetadata);
}
}
delete solverMetadata[id];
}

View File

@ -20,7 +20,7 @@ registerLoadCallback(() => {
awaitEvent("dev-mode:end").then(async () => { awaitEvent("dev-mode:end").then(async () => {
await awaitEvent("fileLoad:end"); await awaitEvent("fileLoad:end");
initializeResize(); // initializeResize();
}); });
}); });
@ -67,7 +67,7 @@ function highlight(axis, n, add) {
}); });
} }
function resize(axis, n, add, e) { function resize(axis, n, add) {
const planner = getPlannerDom(); const planner = getPlannerDom();
const size = getPlannerMultiblockSize(); const size = getPlannerMultiblockSize();
if (!add) { if (!add) {

View File

@ -6,9 +6,9 @@ import { initialize3dArray } from "./js-utils.js";
import { recall, save } from "./storage.js"; import { recall, save } from "./storage.js";
import { registerLoadCallback } from "./main.js"; import { registerLoadCallback } from "./main.js";
import { getBlockPickerActiveItem, getBlockPickerRecipe } from "./block-picker.js"; import { getBlockPickerActiveItem, getBlockPickerRecipe } from "./block-picker.js";
import { deleteSolverMetadata, getSolverMetadata, setSolverMetadata } from "./solver.js"; import { deleteSolverMetadata, getSolverMetadata, setSolverMetadata } from "./metadata.js";
import { retainTooltipHover } from "./tooltip.js"; import { retainTooltipHover } from "./tooltip.js";
import { checkEquivalence, findFullEntry, findFullEntryAnywhere, lookupFromMetadata } from "./ncpf-utils.js"; import { checkEquivalence, lookupFromMetadata } from "./ncpf-utils.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;

View File

@ -4,15 +4,15 @@ import { configuration } from "./configuration.js";
import { getPlannerDom, getPlannerMultiblockType, getSelectedCells } from "./planner.js"; import { getPlannerDom, getPlannerMultiblockType, getSelectedCells } from "./planner.js";
import { DomList } from "./dom-list.js"; import { DomList } from "./dom-list.js";
import { getAtlasIndexFromMetadata, getAtlasMetadata, makeAtlasImage } from "./atlas.js"; import { getAtlasIndexFromMetadata, getAtlasMetadata, makeAtlasImage } from "./atlas.js";
import { deleteSolverMetadata, getSolverMetadata, setSolverMetadata } from "./solver.js"; import { deleteSolverMetadata, getSolverMetadata, setSolverMetadata } from "./metadata.js";
import { import {
checkEquivalence, checkEquivalence,
findFullEntry, findFullEntry,
findFullEntryAnywhere, findFullEntryAnywhere,
findFullEntryFromAtlasMetadata, findFullEntryFromAtlasMetadata,
lookupFromMetadata, stripEntryToMinimums stripEntryToMinimums
} from "./ncpf-utils.js"; } from "./ncpf-utils.js";
import { createTooltip, setTooltip, tooltipDataToPlain } from "./tooltip.js"; import { setTooltip, tooltipDataToPlain } from "./tooltip.js";
import { Filter } from "./filter.js"; import { Filter } from "./filter.js";
import { debounce } from "./dom-utils.js"; import { debounce } from "./dom-utils.js";
import { getBlockPickerActiveItem, setBlockPickerRecipe } from "./block-picker.js"; import { getBlockPickerActiveItem, setBlockPickerRecipe } from "./block-picker.js";

View File

@ -1,49 +1,7 @@
import { configuration } from "./configuration.js";
import { emitEvent } from "./events.js"; import { emitEvent } from "./events.js";
import { registerLoadCallback } from "./main.js";
import { getPlannerCellDom, getPlannerDom } from "./planner.js"; import { getPlannerCellDom, getPlannerDom } from "./planner.js";
import { findFullEntry } from "./ncpf-utils.js"; import { findFullEntry } from "./ncpf-utils.js";
import { setSolverMetadata } from "./metadata.js";
registerLoadCallback(() => {
});
const solverMetadata = {};
let solverMetadataCounter = 0;
function createSolverMetadata(data) {
const id = solverMetadataCounter;
solverMetadata[id] = data;
solverMetadataCounter++;
return id;
}
export function setSolverMetadata(domNode, data) {
if (domNode.dataset.solverMetadata) {
solverMetadata[Number(domNode.dataset.solverMetadata)] = data;
return;
}
domNode.dataset.solverMetadata = createSolverMetadata(data).toString(10);
}
export function getSolverMetadata(id) {
if (typeof id === "object") {
// assume DOM element
if (id.dataset && id.dataset.solverMetadata) {
return getSolverMetadata(id.dataset.solverMetadata);
}
return null;
}
if (typeof id === "string") {
return getSolverMetadata(Number(id));
}
return solverMetadata[id];
}
export function deleteSolverMetadata(id) {
if (typeof id === "object") {
// assume DOM object
if (id.dataset && id.dataset.solverMetadata) {
return deleteSolverMetadata(id.dataset.solverMetadata);
}
}
delete solverMetadata[id];
}
export function resetSolver(design = undefined, designConfiguration) { export function resetSolver(design = undefined, designConfiguration) {
const planner = getPlannerDom(); const planner = getPlannerDom();