推进 INI 面板 UI 会话描述 helper
This commit is contained in:
@@ -49,8 +49,12 @@ 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 UI_SESSION = {
|
||||
snapshotId: "ui-machine-session",
|
||||
snapshotFilename: "ui-machine-session.json",
|
||||
defaultGcodeFilename: GCODE_FILENAME,
|
||||
gcodeWasmPath: GCODE_WASM_FILE,
|
||||
};
|
||||
const DEFAULT_TOOL_TABLE = "T2 P7 Z3.125 D1.5 I12 J34 Q4 ;ui session tool\n";
|
||||
const DEFAULT_PARAMETERS = [
|
||||
"5161 0.0",
|
||||
@@ -312,10 +316,19 @@ function syncEditorToWasmFs() {
|
||||
requireIniSdk().writeTextFile(WASM_FILE, editor.value);
|
||||
}
|
||||
|
||||
function sessionSnapshotLabel(snapshot = UI_SESSION) {
|
||||
const sessionId = typeof snapshot === "string" ? snapshot : snapshot.snapshotId ?? snapshot.sessionId;
|
||||
return `${sessionId}/${UI_SESSION.snapshotFilename}`;
|
||||
}
|
||||
|
||||
function defaultGcodeOpfsPath() {
|
||||
return `linuxcnc/gcode/${UI_SESSION.defaultGcodeFilename}`;
|
||||
}
|
||||
|
||||
async function loadSelectedGcodeProgram() {
|
||||
const opfsPath = restoredSessionSnapshot?.payload?.files?.gcode;
|
||||
let filename = GCODE_FILENAME;
|
||||
let selectedOpfsPath = `linuxcnc/gcode/${GCODE_FILENAME}`;
|
||||
let filename = UI_SESSION.defaultGcodeFilename;
|
||||
let selectedOpfsPath = defaultGcodeOpfsPath();
|
||||
let source = "default";
|
||||
if (typeof opfsPath === "string") {
|
||||
try {
|
||||
@@ -323,23 +336,23 @@ async function loadSelectedGcodeProgram() {
|
||||
selectedOpfsPath = opfsPath;
|
||||
source = "snapshot";
|
||||
} catch {
|
||||
filename = GCODE_FILENAME;
|
||||
filename = UI_SESSION.defaultGcodeFilename;
|
||||
}
|
||||
}
|
||||
return {
|
||||
filename,
|
||||
opfsPath: selectedOpfsPath,
|
||||
source,
|
||||
wasmPath: GCODE_WASM_FILE,
|
||||
wasmPath: UI_SESSION.gcodeWasmPath,
|
||||
text: await loadGcodeProgram(filename),
|
||||
};
|
||||
}
|
||||
|
||||
async function restoreSessionSnapshotToEditor() {
|
||||
const snapshot = await loadMachineSessionSnapshot(
|
||||
SESSION_SNAPSHOT_ID,
|
||||
UI_SESSION.snapshotId,
|
||||
MACHINE_ID,
|
||||
{ filename: SESSION_SNAPSHOT_FILENAME },
|
||||
{ filename: UI_SESSION.snapshotFilename },
|
||||
);
|
||||
const files = await loadMachineTextFiles(MACHINE_ID);
|
||||
editor.value = files.ini;
|
||||
@@ -347,7 +360,7 @@ async function restoreSessionSnapshotToEditor() {
|
||||
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}`);
|
||||
setField("sessionSnapshot", sessionSnapshotLabel(snapshot.sessionId));
|
||||
restoredSessionSnapshot = snapshot;
|
||||
return snapshot;
|
||||
}
|
||||
@@ -466,7 +479,7 @@ document.getElementById("save-machine-files").addEventListener("click", async ()
|
||||
toolTable: DEFAULT_TOOL_TABLE,
|
||||
parameters: DEFAULT_PARAMETERS,
|
||||
});
|
||||
const gcodePath = await saveGcodeProgram(GCODE_FILENAME, DEFAULT_GCODE);
|
||||
const gcodePath = await saveGcodeProgram(UI_SESSION.defaultGcodeFilename, DEFAULT_GCODE);
|
||||
setLog(
|
||||
[
|
||||
"Saved machine text files to OPFS.",
|
||||
@@ -488,13 +501,13 @@ document.getElementById("save-session-snapshot").addEventListener("click", async
|
||||
toolTable: DEFAULT_TOOL_TABLE,
|
||||
parameters: DEFAULT_PARAMETERS,
|
||||
});
|
||||
await saveGcodeProgram(GCODE_FILENAME, DEFAULT_GCODE);
|
||||
await saveGcodeProgram(UI_SESSION.defaultGcodeFilename, DEFAULT_GCODE);
|
||||
const snapshot = await saveMachineSessionSnapshot(
|
||||
SESSION_SNAPSHOT_ID,
|
||||
UI_SESSION.snapshotId,
|
||||
MACHINE_ID,
|
||||
{
|
||||
filename: SESSION_SNAPSHOT_FILENAME,
|
||||
gcodeFilename: GCODE_FILENAME,
|
||||
filename: UI_SESSION.snapshotFilename,
|
||||
gcodeFilename: UI_SESSION.defaultGcodeFilename,
|
||||
metadata: { source: "ini-panel" },
|
||||
},
|
||||
);
|
||||
@@ -502,11 +515,11 @@ document.getElementById("save-session-snapshot").addEventListener("click", async
|
||||
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}`);
|
||||
setField("sessionSnapshot", sessionSnapshotLabel(UI_SESSION));
|
||||
setLog(
|
||||
[
|
||||
"Saved machine session snapshot to OPFS.",
|
||||
`Snapshot: ${SESSION_SNAPSHOT_ID}/${SESSION_SNAPSHOT_FILENAME}`,
|
||||
`Snapshot: ${sessionSnapshotLabel(UI_SESSION)}`,
|
||||
`INI: ${snapshot.payload.files.ini}`,
|
||||
`Parameter file: ${snapshot.payload.files.parameters}`,
|
||||
`Tool table file: ${snapshot.payload.files.toolTable}`,
|
||||
@@ -524,7 +537,7 @@ document.getElementById("restore-session-snapshot").addEventListener("click", as
|
||||
setLog(
|
||||
[
|
||||
"Restored machine session snapshot from OPFS.",
|
||||
`Snapshot: ${snapshot.sessionId}/${SESSION_SNAPSHOT_FILENAME}`,
|
||||
`Snapshot: ${sessionSnapshotLabel(snapshot.sessionId)}`,
|
||||
`INI: ${snapshot.payload.files.ini}`,
|
||||
`Parameter file: ${snapshot.payload.files.parameters}`,
|
||||
`Tool table file: ${snapshot.payload.files.toolTable}`,
|
||||
@@ -562,7 +575,7 @@ document.getElementById("restore-load-session").addEventListener("click", async
|
||||
setLog(
|
||||
[
|
||||
"Restored and loaded machine session snapshot.",
|
||||
`Snapshot: ${snapshot.sessionId}/${SESSION_SNAPSHOT_FILENAME}`,
|
||||
`Snapshot: ${sessionSnapshotLabel(snapshot.sessionId)}`,
|
||||
`INI: ${loadedSession.ini.opfsPath} -> ${loadedSession.ini.wasmPath}`,
|
||||
`Parameter file: ${loadedSession.parameters.opfsPath} -> ${loadedSession.parameters.wasmPath}`,
|
||||
`Parameters: ${loadedSession.parameters.result.trim()}`,
|
||||
|
||||
Reference in New Issue
Block a user