This commit is contained in:
Andrew Pimenov 2026-08-26 17:02:12 +03:00 • committed by GitHub
commit 8099a06e2f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -940,14 +940,16 @@ async function initSettings(): Promise<void> {
await runBackups(settings.dataDir, settings.deletedRetentionDays); await runBackups(settings.dataDir, settings.deletedRetentionDays);
} }
async function initDataAndEngine(): Promise<void> { function initEngine(): void {
engine = new SumEngine({ engine = new SumEngine({
precision: settings.precision, precision: settings.precision,
groupSeparator: settings.groupSeparator, groupSeparator: settings.groupSeparator,
decimalSeparator: settings.decimalSeparator, decimalSeparator: settings.decimalSeparator,
dateFormat: settings.dateFormat, dateFormat: settings.dateFormat,
}); });
}
async function initData(): Promise<void> {
const stored = await loadAppData(settings.dataDir); const stored = await loadAppData(settings.dataDir);
// a corrupt or foreign documents.json must not crash the boot // a corrupt or foreign documents.json must not crash the boot
if ( if (
@ -968,10 +970,14 @@ async function initDataAndEngine(): Promise<void> {
} }
if (!data.docs.some((d) => d.id === data.activeId)) if (!data.docs.some((d) => d.id === data.activeId))
data.activeId = data.docs[0].id; data.activeId = data.docs[0].id;
}
async function initExtensions(): Promise<void> {
const scripts = await loadExtensionScripts(); const scripts = await loadExtensionScripts();
await runExtensions(engine, scripts); await runExtensions(engine, scripts);
}
function initWorkspace(): void {
workspace = new Workspace(engine, () => workspace = new Workspace(engine, () =>
data.docs.map((d) => ({ data.docs.map((d) => ({
id: d.id, id: d.id,
@ -979,7 +985,9 @@ async function initDataAndEngine(): Promise<void> {
text: data.contents[d.id] ?? "", text: data.contents[d.id] ?? "",
})), })),
); );
}
function initEditor(): void {
editor = new SumEditor( editor = new SumEditor(
$("#editor"), $("#editor"),
$("#results"), $("#results"),
@ -1016,7 +1024,9 @@ async function initDataAndEngine(): Promise<void> {
// the editor above was seeded directly with initialText (not via switchDoc), // the editor above was seeded directly with initialText (not via switchDoc),
// so a reopened sheet with "on 2024-01-01" needs its own historical-rate fetch // so a reopened sheet with "on 2024-01-01" needs its own historical-rate fetch
void fetchNeededHistoricalRates(data.contents[data.activeId] ?? ""); void fetchNeededHistoricalRates(data.contents[data.activeId] ?? "");
}
function initSearchController(): void {
search = initSearch({ search = initSearch({
engine, engine,
workspace, workspace,
@ -1034,6 +1044,15 @@ async function initDataAndEngine(): Promise<void> {
}); });
} }
async function initDataAndEngine(): Promise<void> {
initEngine();
await initData();
await initExtensions();
initWorkspace();
initEditor();
initSearchController();
}
function bindTitleUI(): void { function bindTitleUI(): void {
const titleField = $<HTMLInputElement>("#doc-title"); const titleField = $<HTMLInputElement>("#doc-title");
titleField.addEventListener("change", () => { titleField.addEventListener("change", () => {