推进 text12 接续和 control-page session readiness workflow
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import {
|
||||
refreshMachineSessionControlPage,
|
||||
} from "./control-page-refresh-workflow.js";
|
||||
import {
|
||||
loadMachineSessionForControlPageWorkflow,
|
||||
} from "./control-page-session-workflow.js";
|
||||
|
||||
export function createMachineSessionControlPageController({
|
||||
panelFrame,
|
||||
@@ -50,6 +53,14 @@ export function createMachineSessionControlPageController({
|
||||
});
|
||||
}
|
||||
|
||||
function loadSessionState() {
|
||||
return loadMachineSessionForControlPageWorkflow({
|
||||
getPanelWindow,
|
||||
getPanelApi,
|
||||
getControlView,
|
||||
});
|
||||
}
|
||||
|
||||
function startPolling() {
|
||||
if (!refreshTimer) {
|
||||
refreshTimer = setIntervalFn(render, pollMs);
|
||||
@@ -72,6 +83,7 @@ export function createMachineSessionControlPageController({
|
||||
getControlView,
|
||||
getPanelApi,
|
||||
getPanelWindow,
|
||||
loadSessionState,
|
||||
mount,
|
||||
refresh,
|
||||
render,
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
export function createControlPageSessionLoadState({
|
||||
phase,
|
||||
panelReady = false,
|
||||
apiReady = false,
|
||||
controlViewReady = false,
|
||||
stateBundle = null,
|
||||
workflowStatus = null,
|
||||
controlView = null,
|
||||
error = null,
|
||||
} = {}) {
|
||||
return {
|
||||
phase,
|
||||
panelReady,
|
||||
apiReady,
|
||||
controlViewReady,
|
||||
stateBundle,
|
||||
workflowStatus,
|
||||
controlView,
|
||||
error,
|
||||
};
|
||||
}
|
||||
|
||||
export function loadMachineSessionForControlPageWorkflow({
|
||||
getPanelWindow,
|
||||
getPanelApi,
|
||||
getControlView,
|
||||
} = {}) {
|
||||
if (typeof getPanelWindow !== "function") {
|
||||
throw new Error("A panel window getter is required.");
|
||||
}
|
||||
if (typeof getPanelApi !== "function") {
|
||||
throw new Error("A panel API getter is required.");
|
||||
}
|
||||
if (typeof getControlView !== "function") {
|
||||
throw new Error("A control view getter is required.");
|
||||
}
|
||||
|
||||
let panelWindow = null;
|
||||
let panelApi = null;
|
||||
let controlView = null;
|
||||
try {
|
||||
panelWindow = getPanelWindow();
|
||||
panelApi = getPanelApi();
|
||||
controlView = getControlView();
|
||||
} catch (error) {
|
||||
return createControlPageSessionLoadState({
|
||||
phase: "error",
|
||||
error: error.message,
|
||||
});
|
||||
}
|
||||
|
||||
if (!panelWindow) {
|
||||
return createControlPageSessionLoadState({
|
||||
phase: "waiting-panel",
|
||||
});
|
||||
}
|
||||
|
||||
if (!panelApi) {
|
||||
return createControlPageSessionLoadState({
|
||||
phase: "waiting-api",
|
||||
panelReady: true,
|
||||
});
|
||||
}
|
||||
|
||||
if (!controlView) {
|
||||
return createControlPageSessionLoadState({
|
||||
phase: "waiting-session",
|
||||
panelReady: true,
|
||||
apiReady: true,
|
||||
stateBundle: panelApi.getMachineSessionStateBundle?.() ?? null,
|
||||
workflowStatus: panelApi.getMachineSessionWorkflowStatus?.() ?? null,
|
||||
});
|
||||
}
|
||||
|
||||
return createControlPageSessionLoadState({
|
||||
phase: "ready",
|
||||
panelReady: true,
|
||||
apiReady: true,
|
||||
controlViewReady: true,
|
||||
stateBundle: panelApi.getMachineSessionStateBundle?.() ?? null,
|
||||
workflowStatus: panelApi.getMachineSessionWorkflowStatus?.() ?? null,
|
||||
controlView,
|
||||
});
|
||||
}
|
||||
@@ -21,6 +21,7 @@ controller.mount();
|
||||
window.linuxCncIniPanelControlPageApi = {
|
||||
getControlView: controller.getControlView,
|
||||
getPanelApi: controller.getPanelApi,
|
||||
loadControlPageSessionState: controller.loadSessionState,
|
||||
refreshControlPage: controller.refresh,
|
||||
renderControlPage: controller.render,
|
||||
};
|
||||
|
||||
@@ -14,11 +14,19 @@ import {
|
||||
createControlPageRefreshState,
|
||||
refreshMachineSessionControlPage,
|
||||
} from "./control-page-refresh-workflow.js";
|
||||
import {
|
||||
createControlPageSessionLoadState,
|
||||
loadMachineSessionForControlPageWorkflow,
|
||||
} from "./control-page-session-workflow.js";
|
||||
export {
|
||||
controlPageStatusText,
|
||||
createControlPageRefreshState,
|
||||
refreshMachineSessionControlPage,
|
||||
} from "./control-page-refresh-workflow.js";
|
||||
export {
|
||||
createControlPageSessionLoadState,
|
||||
loadMachineSessionForControlPageWorkflow,
|
||||
} from "./control-page-session-workflow.js";
|
||||
export {
|
||||
INI_PANEL_ENTRIES,
|
||||
getIniPanelEntryByHref,
|
||||
@@ -53,6 +61,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
|
||||
launcherLinks: createIniPanelLauncherLinkViewModel(entries),
|
||||
controlPage: {
|
||||
createController: createMachineSessionControlPageController,
|
||||
loadSessionState: loadMachineSessionForControlPageWorkflow,
|
||||
refresh: refreshMachineSessionControlPage,
|
||||
renderView: renderMachineSessionControlView,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user