推进 INI 面板会话快照工作流
This commit is contained in:
@@ -17,6 +17,10 @@ import {
|
||||
import {
|
||||
loadMachineSessionFromOpfs,
|
||||
} from "../../opfs/linuxcnc-machine-session-bridge.js";
|
||||
import {
|
||||
loadMachineSessionSnapshot,
|
||||
saveMachineSessionSnapshot,
|
||||
} from "../../opfs/snapshot-store.js";
|
||||
|
||||
const SAMPLE_PATH =
|
||||
"../../../vendor/linuxcnc/configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini";
|
||||
@@ -44,6 +48,8 @@ const SESSION_WASM_FILES = {
|
||||
};
|
||||
const GCODE_FILENAME = "ui-session.ngc";
|
||||
const GCODE_WASM_FILE = "/work/ui-session.ngc";
|
||||
const SESSION_SNAPSHOT_ID = "ui-machine-session";
|
||||
const SESSION_SNAPSHOT_FILENAME = "ui-machine-session.json";
|
||||
const DEFAULT_TOOL_TABLE = "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;ui session tool\n";
|
||||
const DEFAULT_PARAMETERS = [
|
||||
"5161 0.0",
|
||||
@@ -96,6 +102,7 @@ const fields = {
|
||||
sessionParameters: document.getElementById("field-session-parameters"),
|
||||
sessionToolTable: document.getElementById("field-session-tool-table"),
|
||||
sessionGcode: document.getElementById("field-session-gcode"),
|
||||
sessionSnapshot: document.getElementById("field-session-snapshot"),
|
||||
runStatus: document.getElementById("field-run-status"),
|
||||
fiveaxisRemap: document.getElementById("field-fiveaxis-remap"),
|
||||
};
|
||||
@@ -417,6 +424,72 @@ document.getElementById("save-machine-files").addEventListener("click", async ()
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("save-session-snapshot").addEventListener("click", async () => {
|
||||
try {
|
||||
await saveMachineTextFiles(MACHINE_ID, {
|
||||
ini: editor.value,
|
||||
toolTable: DEFAULT_TOOL_TABLE,
|
||||
parameters: DEFAULT_PARAMETERS,
|
||||
});
|
||||
await saveGcodeProgram(GCODE_FILENAME, DEFAULT_GCODE);
|
||||
const snapshot = await saveMachineSessionSnapshot(
|
||||
SESSION_SNAPSHOT_ID,
|
||||
MACHINE_ID,
|
||||
{
|
||||
filename: SESSION_SNAPSHOT_FILENAME,
|
||||
gcodeFilename: GCODE_FILENAME,
|
||||
metadata: { source: "ini-panel" },
|
||||
},
|
||||
);
|
||||
setField("sessionIni", snapshot.payload.files.ini);
|
||||
setField("sessionParameters", snapshot.payload.files.parameters);
|
||||
setField("sessionToolTable", snapshot.payload.files.toolTable);
|
||||
setField("sessionGcode", snapshot.payload.files.gcode);
|
||||
setField("sessionSnapshot", `${SESSION_SNAPSHOT_ID}/${SESSION_SNAPSHOT_FILENAME}`);
|
||||
setLog(
|
||||
[
|
||||
"Saved machine session snapshot to OPFS.",
|
||||
`Snapshot: ${SESSION_SNAPSHOT_ID}/${SESSION_SNAPSHOT_FILENAME}`,
|
||||
`INI: ${snapshot.payload.files.ini}`,
|
||||
`Parameter file: ${snapshot.payload.files.parameters}`,
|
||||
`Tool table file: ${snapshot.payload.files.toolTable}`,
|
||||
`G-code: ${snapshot.payload.files.gcode}`,
|
||||
].join("\n"),
|
||||
);
|
||||
} catch (error) {
|
||||
setLog(`Machine session snapshot save failed: ${error.message}`, true);
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("restore-session-snapshot").addEventListener("click", async () => {
|
||||
try {
|
||||
const snapshot = await loadMachineSessionSnapshot(
|
||||
SESSION_SNAPSHOT_ID,
|
||||
MACHINE_ID,
|
||||
{ filename: SESSION_SNAPSHOT_FILENAME },
|
||||
);
|
||||
const files = await loadMachineTextFiles(MACHINE_ID);
|
||||
editor.value = files.ini;
|
||||
setField("sessionIni", snapshot.payload.files.ini);
|
||||
setField("sessionParameters", snapshot.payload.files.parameters);
|
||||
setField("sessionToolTable", snapshot.payload.files.toolTable);
|
||||
setField("sessionGcode", snapshot.payload.files.gcode);
|
||||
setField("sessionSnapshot", `${snapshot.sessionId}/${SESSION_SNAPSHOT_FILENAME}`);
|
||||
setLog(
|
||||
[
|
||||
"Restored machine session snapshot from OPFS.",
|
||||
`Snapshot: ${snapshot.sessionId}/${SESSION_SNAPSHOT_FILENAME}`,
|
||||
`INI: ${snapshot.payload.files.ini}`,
|
||||
`Parameter file: ${snapshot.payload.files.parameters}`,
|
||||
`Tool table file: ${snapshot.payload.files.toolTable}`,
|
||||
`G-code: ${snapshot.payload.files.gcode ?? "-"}`,
|
||||
].join("\n"),
|
||||
);
|
||||
} catch (error) {
|
||||
setLog(`Machine session snapshot restore failed: ${error.message}`, true);
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("load-session").addEventListener("click", async () => {
|
||||
try {
|
||||
loadedSession = await loadMachineSessionFromOpfs(
|
||||
|
||||
@@ -228,6 +228,8 @@
|
||||
<button id="load-opfs">Load From OPFS</button>
|
||||
<button id="save-machine-files">Save Machine Files</button>
|
||||
<button id="load-machine-files">Load Machine Files</button>
|
||||
<button id="save-session-snapshot">Save Session Snapshot</button>
|
||||
<button id="restore-session-snapshot">Restore Session Snapshot</button>
|
||||
<button id="sync-wasm">Sync To WASM FS</button>
|
||||
<button id="query" class="secondary">Query LinuxCNC Fields</button>
|
||||
<button id="load-session" class="secondary">Load Machine Session</button>
|
||||
@@ -272,6 +274,8 @@
|
||||
<dd id="field-session-tool-table">-</dd>
|
||||
<dt>Session G-code</dt>
|
||||
<dd id="field-session-gcode">-</dd>
|
||||
<dt>Session Snapshot</dt>
|
||||
<dd id="field-session-snapshot">-</dd>
|
||||
<dt>Run Status</dt>
|
||||
<dd id="field-run-status">-</dd>
|
||||
<dt>5-Axis Remap</dt>
|
||||
|
||||
Reference in New Issue
Block a user