Add chance simulator toolbox and refine checklist interactions
All checks were successful
Deploy Sokko G / deploy (push) Successful in 17s

This commit is contained in:
Shinuwa 2026-08-31 15:16:36 +02:00
parent 35fe877d58
commit 6b85e58765
25 changed files with 1518 additions and 18 deletions

View file

@ -310,6 +310,60 @@ export function validateSiteContent(site) {
"toolboxes.modules.randomizer.exportSuccess",
"toolboxes.modules.randomizer.importError",
"toolboxes.modules.randomizer.exportInfo",
"toolboxes.modules.rngSimulator.ratesTitle",
"toolboxes.modules.rngSimulator.addRateTitle",
"toolboxes.modules.rngSimulator.editRateTitle",
"toolboxes.modules.rngSimulator.emptyRates",
"toolboxes.modules.rngSimulator.labelLabel",
"toolboxes.modules.rngSimulator.labelPlaceholder",
"toolboxes.modules.rngSimulator.rateLabel",
"toolboxes.modules.rngSimulator.rateLabelRequired",
"toolboxes.modules.rngSimulator.rateInvalid",
"toolboxes.modules.rngSimulator.addRateButton",
"toolboxes.modules.rngSimulator.saveRateButton",
"toolboxes.modules.rngSimulator.cancelButton",
"toolboxes.modules.rngSimulator.deleteTitle",
"toolboxes.modules.rngSimulator.noActiveRateTitle",
"toolboxes.modules.rngSimulator.simulationDrawsLabel",
"toolboxes.modules.rngSimulator.perHourLabel",
"toolboxes.modules.rngSimulator.perDayLabel",
"toolboxes.modules.rngSimulator.perMonthLabel",
"toolboxes.modules.rngSimulator.probabilitySectionTitle",
"toolboxes.modules.rngSimulator.multiplierLabel",
"toolboxes.modules.rngSimulator.clearMultiplierButton",
"toolboxes.modules.rngSimulator.averageDrawsLabel",
"toolboxes.modules.rngSimulator.simulationChanceLabel",
"toolboxes.modules.rngSimulator.averageTimeTitle",
"toolboxes.modules.rngSimulator.occurrenceCountLabel",
"toolboxes.modules.rngSimulator.hourTimeLabel",
"toolboxes.modules.rngSimulator.dayTimeLabel",
"toolboxes.modules.rngSimulator.monthTimeLabel",
"toolboxes.modules.rngSimulator.chanceTargetsTitle",
"toolboxes.modules.rngSimulator.drawsUnit",
"toolboxes.modules.rngSimulator.hoursUnit",
"toolboxes.modules.rngSimulator.daysUnit",
"toolboxes.modules.rngSimulator.monthsUnit",
"toolboxes.modules.rngSimulator.emptySummary",
"toolboxes.modules.rngSimulator.simulationTitle",
"toolboxes.modules.rngSimulator.simulateButton",
"toolboxes.modules.rngSimulator.clearHistoryButton",
"toolboxes.modules.rngSimulator.emptyHistory",
"toolboxes.modules.rngSimulator.successesLabel",
"toolboxes.modules.rngSimulator.failsLabel",
"toolboxes.modules.rngSimulator.observedRateLabel",
"toolboxes.modules.rngSimulator.multiplierShortLabel",
"toolboxes.modules.rngSimulator.longestFailStreakLabel",
"toolboxes.modules.rngSimulator.importPlaceholder",
"toolboxes.modules.rngSimulator.importOpenButton",
"toolboxes.modules.rngSimulator.exportOpenButton",
"toolboxes.modules.rngSimulator.importModalTitle",
"toolboxes.modules.rngSimulator.exportModalTitle",
"toolboxes.modules.rngSimulator.importButton",
"toolboxes.modules.rngSimulator.exportButton",
"toolboxes.modules.rngSimulator.importSuccess",
"toolboxes.modules.rngSimulator.exportSuccess",
"toolboxes.modules.rngSimulator.importError",
"toolboxes.modules.rngSimulator.exportInfo",
"toolboxes.modules.combos.deviceLabel",
"toolboxes.modules.combos.keyboardLayoutLabel",
"toolboxes.modules.combos.categoryPlaceholder",
@ -711,7 +765,7 @@ export function validateSiteContent(site) {
});
const libraryToolDocs = valueAt(site, "library.toolDocs");
["memos", "notepad", "checklist", "counters", "randomizer", "images", "imageAnnotation", "links", "calculator", "table", "goalTree", "timer", "calendar", "taskPlanner", "combos", "equipmentPlanner"].forEach((toolType) => {
["memos", "notepad", "checklist", "counters", "randomizer", "rngSimulator", "images", "imageAnnotation", "links", "calculator", "table", "goalTree", "timer", "calendar", "taskPlanner", "combos", "equipmentPlanner"].forEach((toolType) => {
const docs = libraryToolDocs?.[toolType];
assert.equal(typeof docs, "object", `library.toolDocs.${toolType} must be an object`);
assert.ok(Array.isArray(docs.controls), `library.toolDocs.${toolType}.controls must be an array`);