推进 INI 面板 launch 暴露 control-page API 清单

This commit is contained in:
2026-06-15 06:20:12 +08:00
parent efc4bcf64f
commit 6ba8e43850
9 changed files with 137 additions and 16 deletions

View File

@@ -5,6 +5,7 @@ import {
createMachineSessionControlPageController,
} from "./control-page-controller.js";
import {
createControlPageBrowserApiMethods,
createIniPanelShellControlPageContract,
} from "./ui-shell.js";
@@ -21,19 +22,6 @@ const controller = createMachineSessionControlPageController({
controller.mount();
export function createControlPageBrowserApiMethods() {
return [
"getControlPageApiMethods",
"getControlPageContract",
"getControlView",
"getPanelApi",
"loadControlPageSessionState",
"readControlPageStatus",
"refreshControlPage",
"renderControlPage",
];
}
window.linuxCncIniPanelControlPageApi = {
getControlPageApiMethods: createControlPageBrowserApiMethods,
getControlView: controller.getControlView,

View File

@@ -73,9 +73,13 @@
</section>
</main>
<script type="module">
import { createIniPanelLauncherLinkViewModel } from "./ui-shell.js";
import {
createIniPanelLauncherLinkViewModel,
createIniPanelShellViewModel,
} from "./ui-shell.js";
const links = createIniPanelLauncherLinkViewModel();
const shellViewModel = createIniPanelShellViewModel();
const links = shellViewModel.launcherLinks;
for (const linkModel of links) {
const link = document.querySelector(`a[data-entry-id="${linkModel.entryId}"]`);
if (!link) {
@@ -84,6 +88,11 @@
link.textContent = linkModel.label;
link.href = linkModel.href;
}
window.linuxCncIniPanelLaunchApi = {
getLauncherLinks: () => shellViewModel.launcherLinks,
getControlPageApiMethods: () => shellViewModel.controlPage.browserApiMethods,
};
</script>
</body>
</html>

View File

@@ -78,6 +78,19 @@ export function createIniPanelShellControlPageContract() {
};
}
export function createControlPageBrowserApiMethods() {
return [
"getControlPageApiMethods",
"getControlPageContract",
"getControlView",
"getPanelApi",
"loadControlPageSessionState",
"readControlPageStatus",
"refreshControlPage",
"renderControlPage",
];
}
export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries()) {
return {
pages: entries.map(({ id, href, title }) => ({
@@ -87,6 +100,7 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
})),
launcherLinks: createIniPanelLauncherLinkViewModel(entries),
controlPage: {
browserApiMethods: createControlPageBrowserApiMethods(),
contract: createIniPanelShellControlPageContract(),
createController: createMachineSessionControlPageController,
loadSessionState: loadMachineSessionForControlPageWorkflow,