推进 INI 面板 restore/load session workflow helper
This commit is contained in:
@@ -42,6 +42,7 @@ import {
|
||||
sessionSnapshotSummaryLogLines,
|
||||
} from "./session-summary.js";
|
||||
import {
|
||||
restoreMachineSessionSnapshotWorkflow,
|
||||
saveMachineSessionSnapshotWorkflow,
|
||||
} from "./session-workflow.js";
|
||||
|
||||
@@ -600,16 +601,24 @@ document.getElementById("save-session-snapshot").addEventListener("click", async
|
||||
|
||||
document.getElementById("restore-session-snapshot").addEventListener("click", async () => {
|
||||
try {
|
||||
const snapshot = await restoreSessionSnapshotToEditor();
|
||||
const summary = createSessionSnapshotSummary(snapshot, sessionSnapshotLabel(snapshot.sessionId));
|
||||
const workflow = await restoreMachineSessionSnapshotWorkflow({
|
||||
machineId: MACHINE_ID,
|
||||
snapshotId: UI_SESSION.snapshotId,
|
||||
snapshotFilename: UI_SESSION.snapshotFilename,
|
||||
snapshotLabel: sessionSnapshotLabel(UI_SESSION),
|
||||
loadMachineSessionSnapshot,
|
||||
loadMachineTextFiles,
|
||||
});
|
||||
editor.value = workflow.editorIniText;
|
||||
setField("sessionIni", workflow.fields.sessionIni);
|
||||
setField("sessionParameters", workflow.fields.sessionParameters);
|
||||
setField("sessionToolTable", workflow.fields.sessionToolTable);
|
||||
setField("sessionGcode", workflow.fields.sessionGcode);
|
||||
setField("sessionSnapshot", workflow.fields.sessionSnapshot);
|
||||
setLog(
|
||||
[
|
||||
"Restored machine session snapshot from OPFS.",
|
||||
...sessionSnapshotSummaryLogLines(summary),
|
||||
`INI: ${summary.iniOpfsPath}`,
|
||||
`Parameter file: ${summary.parameterOpfsPath}`,
|
||||
`Tool table file: ${summary.toolTableOpfsPath}`,
|
||||
`G-code: ${summary.gcodeOpfsPath ?? "-"}`,
|
||||
...workflow.logLines,
|
||||
].join("\n"),
|
||||
);
|
||||
} catch (error) {
|
||||
@@ -634,17 +643,25 @@ document.getElementById("load-session").addEventListener("click", async () => {
|
||||
|
||||
document.getElementById("restore-load-session").addEventListener("click", async () => {
|
||||
try {
|
||||
const snapshot = await restoreSessionSnapshotToEditor();
|
||||
await loadMachineSessionIntoWasm();
|
||||
setField("sessionGcode", snapshot.payload.files.gcode);
|
||||
const summary = createSessionSnapshotSummary(snapshot, sessionSnapshotLabel(snapshot.sessionId));
|
||||
const loadSummary = createMachineSessionLoadSummary(loadedSession);
|
||||
const workflow = await restoreMachineSessionSnapshotWorkflow({
|
||||
machineId: MACHINE_ID,
|
||||
snapshotId: UI_SESSION.snapshotId,
|
||||
snapshotFilename: UI_SESSION.snapshotFilename,
|
||||
snapshotLabel: sessionSnapshotLabel(UI_SESSION),
|
||||
loadMachineSessionSnapshot,
|
||||
loadMachineTextFiles,
|
||||
loadSession: () => loadMachineSessionIntoWasm(),
|
||||
});
|
||||
editor.value = workflow.editorIniText;
|
||||
setField("sessionIni", workflow.fields.sessionIni);
|
||||
setField("sessionParameters", workflow.fields.sessionParameters);
|
||||
setField("sessionToolTable", workflow.fields.sessionToolTable);
|
||||
setField("sessionGcode", workflow.fields.sessionGcode);
|
||||
setField("sessionSnapshot", workflow.fields.sessionSnapshot);
|
||||
setLog(
|
||||
[
|
||||
"Restored and loaded machine session snapshot.",
|
||||
...sessionSnapshotSummaryLogLines(summary),
|
||||
...machineSessionLoadLogLines(loadSummary),
|
||||
`G-code: ${summary.gcodeOpfsPath ?? "-"}`,
|
||||
...workflow.logLines,
|
||||
].join("\n"),
|
||||
);
|
||||
} catch (error) {
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
import {
|
||||
createMachineSessionLoadSummary,
|
||||
machineSessionLoadLogLines,
|
||||
} from "./session-load-summary.js";
|
||||
import {
|
||||
createSessionSnapshotSummary,
|
||||
sessionSnapshotSummaryLogLines,
|
||||
@@ -23,6 +27,16 @@ export function sessionSnapshotSaveLogLines(summary) {
|
||||
];
|
||||
}
|
||||
|
||||
export function sessionSnapshotRestoreLogLines(summary) {
|
||||
return [
|
||||
...sessionSnapshotSummaryLogLines(summary),
|
||||
`INI: ${summary.iniOpfsPath}`,
|
||||
`Parameter file: ${summary.parameterOpfsPath}`,
|
||||
`Tool table file: ${summary.toolTableOpfsPath}`,
|
||||
`G-code: ${summary.gcodeOpfsPath ?? "-"}`,
|
||||
];
|
||||
}
|
||||
|
||||
export async function saveMachineSessionSnapshotWorkflow({
|
||||
machineId,
|
||||
snapshotId,
|
||||
@@ -63,3 +77,54 @@ export async function saveMachineSessionSnapshotWorkflow({
|
||||
logLines: sessionSnapshotSaveLogLines(summary),
|
||||
};
|
||||
}
|
||||
|
||||
export async function restoreMachineSessionSnapshotWorkflow({
|
||||
machineId,
|
||||
snapshotId,
|
||||
snapshotFilename,
|
||||
snapshotLabel,
|
||||
loadMachineSessionSnapshot,
|
||||
loadMachineTextFiles,
|
||||
loadSession = null,
|
||||
}) {
|
||||
const snapshot = await loadMachineSessionSnapshot(
|
||||
snapshotId,
|
||||
machineId,
|
||||
{ filename: snapshotFilename },
|
||||
);
|
||||
const files = await loadMachineTextFiles(machineId);
|
||||
const summary = createSessionSnapshotSummary(snapshot, snapshotLabel ?? snapshotLabelFromSession(snapshot));
|
||||
const fields = createSessionSnapshotFieldState(summary);
|
||||
const result = {
|
||||
snapshot,
|
||||
editorIniText: files.ini,
|
||||
summary,
|
||||
fields,
|
||||
loadSummary: null,
|
||||
loadedSession: null,
|
||||
logLines: sessionSnapshotRestoreLogLines(summary),
|
||||
};
|
||||
if (loadSession) {
|
||||
const loadedSession = await loadSession();
|
||||
const loadSummary = createMachineSessionLoadSummary(loadedSession);
|
||||
result.loadedSession = loadedSession;
|
||||
result.loadSummary = loadSummary;
|
||||
result.fields = {
|
||||
...fields,
|
||||
sessionIni: loadSummary.iniWasmPath,
|
||||
sessionParameters: loadSummary.parameterWasmPath,
|
||||
sessionToolTable: loadSummary.toolTableWasmPath,
|
||||
sessionGcode: summary.gcodeOpfsPath,
|
||||
};
|
||||
result.logLines = [
|
||||
...sessionSnapshotSummaryLogLines(summary),
|
||||
...machineSessionLoadLogLines(loadSummary),
|
||||
`G-code: ${summary.gcodeOpfsPath ?? "-"}`,
|
||||
];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function snapshotLabelFromSession(snapshot) {
|
||||
return snapshot?.metadata?.snapshotLabel ?? snapshot?.sessionId ?? null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user