Files
cnc_wams/wasm-port/runtime/ui/ini-panel/control-page.js

59 lines
1.3 KiB
JavaScript

import {
renderMachineSessionControlView,
} from "./control-view-renderer.js";
const panelFrameNode = document.getElementById("panel-frame");
const statusNode = document.getElementById("control-page-status");
const viewNode = document.getElementById("control-page-view");
let refreshTimer = null;
function getPanelWindow() {
return panelFrameNode?.contentWindow ?? null;
}
function getPanelApi() {
return getPanelWindow()?.linuxCncIniPanelApi ?? null;
}
function getControlView() {
return getPanelApi()?.getMachineSessionControlView?.() ?? null;
}
function renderControlPage() {
const view = getControlView();
if (!view) {
statusNode.textContent = "waiting for panel";
viewNode.textContent = "";
return null;
}
statusNode.textContent = [
view.status.lastAction ?? "-",
view.status.runStatus ?? "-",
view.status.error ?? "-",
].join(" | ");
return renderMachineSessionControlView(viewNode, view);
}
function startPolling() {
if (!refreshTimer) {
refreshTimer = setInterval(renderControlPage, 200);
}
}
panelFrameNode.addEventListener("load", () => {
renderControlPage();
startPolling();
});
panelFrameNode.src = "./index.html";
renderControlPage();
startPolling();
window.linuxCncIniPanelControlPageApi = {
getControlView,
getPanelApi,
renderControlPage,
};