接入 INI 面板只读 session readiness handoff

This commit is contained in:
2026-06-16 06:47:48 +08:00
parent 03db34485e
commit 68ff2fb5d6
16 changed files with 164 additions and 8 deletions

View File

@@ -5,6 +5,7 @@ export function createControlPageSessionLoadState({
controlViewReady = false,
stateBundle = null,
workflowStatus = null,
sessionReadiness = null,
controlView = null,
error = null,
} = {}) {
@@ -15,11 +16,19 @@ export function createControlPageSessionLoadState({
controlViewReady,
stateBundle,
workflowStatus,
sessionReadiness,
controlView,
error,
};
}
function getSessionReadiness(stateBundle, workflowStatus) {
return workflowStatus?.sessionReadiness
?? stateBundle?.workflowStatus?.sessionReadiness
?? stateBundle?.report?.sessionReadiness
?? null;
}
export function loadMachineSessionForControlPageWorkflow({
getPanelWindow,
getPanelApi,
@@ -63,22 +72,28 @@ export function loadMachineSessionForControlPageWorkflow({
}
if (!controlView) {
const stateBundle = panelApi.getMachineSessionStateBundle?.() ?? null;
const workflowStatus = panelApi.getMachineSessionWorkflowStatus?.() ?? null;
return createControlPageSessionLoadState({
phase: "waiting-session",
panelReady: true,
apiReady: true,
stateBundle: panelApi.getMachineSessionStateBundle?.() ?? null,
workflowStatus: panelApi.getMachineSessionWorkflowStatus?.() ?? null,
stateBundle,
workflowStatus,
sessionReadiness: getSessionReadiness(stateBundle, workflowStatus),
});
}
const stateBundle = panelApi.getMachineSessionStateBundle?.() ?? null;
const workflowStatus = panelApi.getMachineSessionWorkflowStatus?.() ?? null;
return createControlPageSessionLoadState({
phase: "ready",
panelReady: true,
apiReady: true,
controlViewReady: true,
stateBundle: panelApi.getMachineSessionStateBundle?.() ?? null,
workflowStatus: panelApi.getMachineSessionWorkflowStatus?.() ?? null,
stateBundle,
workflowStatus,
sessionReadiness: getSessionReadiness(stateBundle, workflowStatus),
controlView,
});
}

View File

@@ -3,6 +3,7 @@ export function createIniPanelStateSummary({
machine = null,
machineFiles = null,
sessionSnapshot = null,
sessionReadiness = null,
sessionLoad = null,
runReadiness = null,
run = null,
@@ -17,6 +18,7 @@ export function createIniPanelStateSummary({
machine,
machineFiles,
sessionSnapshot,
sessionReadiness,
sessionLoad,
runReadiness,
run,
@@ -29,6 +31,7 @@ export function createMachineSessionStateSnapshot({
machine = null,
machineFiles = null,
sessionSnapshot = null,
sessionReadiness = null,
sessionLoad = null,
runReadiness = null,
selectedProgram = null,
@@ -44,6 +47,7 @@ export function createMachineSessionStateSnapshot({
machine,
machineFiles,
sessionSnapshot,
sessionReadiness,
sessionLoad,
runReadiness,
run,
@@ -72,6 +76,7 @@ export function createMachineSessionStateReport(state = {}) {
const badges = state.badges ?? {};
const fields = state.fields ?? {};
const sessionSnapshot = state.sessionSnapshot ?? {};
const sessionReadiness = state.sessionReadiness ?? null;
const sessionLoad = state.sessionLoad ?? {};
const runReadiness = state.runReadiness ?? {};
const selectedProgram = state.selectedProgram ?? {};
@@ -90,6 +95,7 @@ export function createMachineSessionStateReport(state = {}) {
toolTable: fields.sessionToolTable ?? sessionSnapshot.toolTableOpfsPath ?? sessionLoad.toolTableWasmPath ?? null,
gcode: fields.sessionGcode ?? sessionSnapshot.gcodeOpfsPath ?? null,
},
sessionReadiness,
loaded: {
iniWasmPath: sessionLoad.iniWasmPath ?? null,
parameterWasmPath: sessionLoad.parameterWasmPath ?? null,
@@ -141,6 +147,7 @@ export function createMachineSessionWorkflowStatus(state = {}) {
return {
readiness: report.readiness,
overview,
sessionReadiness: report.sessionReadiness ?? null,
runReadiness: report.runReadiness,
lastAction: report.status.lastAction,
error: report.status.error,

View File

@@ -4,12 +4,17 @@ export function createMachineSessionReadonlyStatus({
controlView = null,
} = {}) {
const overview = stateBundle?.overview ?? workflowStatus?.overview ?? null;
const sessionReadiness = workflowStatus?.sessionReadiness
?? stateBundle?.workflowStatus?.sessionReadiness
?? stateBundle?.report?.sessionReadiness
?? null;
return {
stateBundle,
workflowStatus,
overview,
controlView,
report: stateBundle?.report ?? null,
sessionReadiness,
runReadiness: workflowStatus?.runReadiness ?? stateBundle?.report?.runReadiness ?? null,
run: workflowStatus?.run ?? stateBundle?.report?.run ?? null,
session: workflowStatus?.session ?? stateBundle?.report?.session ?? null,
@@ -42,6 +47,7 @@ export function createMachineSessionReadonlyStatusApiManifest() {
"overview",
"controlView",
"report",
"sessionReadiness",
"runReadiness",
"run",
"session",