推进 INI 面板 control view renderer helper

This commit is contained in:
2026-06-14 22:52:21 +08:00
parent 74617cc3fa
commit 27d2316f78
7 changed files with 263 additions and 41 deletions

View File

@@ -1079,3 +1079,67 @@ host_wasm_opfs_browser_smokes=ok
继续推进实质控制网页界面,但保持只读边界。下一批建议把这个 DOM consumer 提取为一个
可复用的纯 renderer helper例如 `renderMachineSessionControlView(container, view)`
供真实页面和 smoke 共用;仍不新增控制按钮,不解析 G-code。
十二、2026-06-14 继续执行记录INI panel control view renderer helper
本轮按“加快实质性推进”把上一批 browser smoke 内的只读 DOM consumer 提取成 runtime
可复用 renderer并接入真实 INI panel 页面,使控制页展示不再依赖测试内临时函数。
完成内容:
- 新增 `wasm-port/runtime/ui/ini-panel/control-view-renderer.js`
- 导出 `renderMachineSessionControlView(container, view)`
- renderer 只负责把 `createMachineSessionControlView(...)` 的 status、sections、rows 渲染
到 DOM
- `wasm-port/runtime/ui/ini-panel/index.html` 新增
`#machine-session-control-view` 只读控制视图容器和对应样式;
- `wasm-port/runtime/ui/ini-panel/app.js` 新增
`window.linuxCncIniPanelApi.renderMachineSessionControlView(container)`
- panel state 每次更新后会刷新内置 control view
- `wasm-port/tests/browser/ini_panel_smoke.html` 删除测试内临时 `renderControlView(...)`
改为导入 runtime renderer
- browser smoke 同时验证外部 consumer 容器和真实页面内置 control view 容器;
- `wasm-port/tests/ui/node/verify_ini_panel_state_summary.mjs` 覆盖纯 renderer DOM 输出;
- `wasm-port/docs/ui-panel-state-summary.md` 补充 renderer API 和外部页面消费方式;
- 未新增控制按钮;
- 未解析 G-code
- 未解释 canonical events
- 未改变 OPFS/session persistence、LinuxCNC interpreter、tool、parameter、planner 或
LinuxCNC-owned runtime semantics。
验证已通过:
```bash
git diff --check
wasm-port/tests/ui/node/verify_ini_panel_state_summary.sh
wasm-port/tests/ui/node/verify_ui_node_smokes.sh
wasm-port/tests/browser/verify_ini_panel_browser.sh
wasm-port/tools/verify_vendor_sync.sh
wasm-port/tools/verify_no_standalone_cnc_semantics.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_interp_wasm.sh
SKIP_INTERP_BUILD=1 wasm-port/tests/wasm/node/verify_sim_configs_inventory_wasm.sh
wasm-port/tests/host/verify_host_smokes.sh
```
关键输出:
```text
ini_panel_state_summary_node_smoke=ok
ui_node_smokes=ok
browser_ini_opfs_smoke=ok
vendor sync up to date
standalone CNC semantics guard complete
interp_wasm_node_smoke=ok
sim_configs_wasm_node_inventory_executed=28
sim_configs_wasm_node_inventory_passed=28
sim_configs_wasm_node_inventory_skipped=131
sim_configs_wasm_node_inventory_unexpected_fail=0
host_wasm_opfs_browser_smokes=ok
```
下一步建议:
继续保持只读边界,下一批建议把 control view renderer 的页面消费路径进一步固化为一个
小型控制页入口或 example page只读取 `linuxCncIniPanelApi`,展示当前 machine/session/run
状态,不新增控制按钮,不解析 G-code。若要优先 SDK/API surface也可以先把当前
state bundle/control view renderer 的导出面整理进一个明确的 UI module 文档入口。