推进 INI 面板 control view renderer helper
This commit is contained in:
60
wasm-port/runtime/ui/ini-panel/control-view-renderer.js
Normal file
60
wasm-port/runtime/ui/ini-panel/control-view-renderer.js
Normal file
@@ -0,0 +1,60 @@
|
||||
function displayValue(value) {
|
||||
return String(value ?? "-");
|
||||
}
|
||||
|
||||
function statusText(status = {}) {
|
||||
return [
|
||||
status.lastAction ?? "-",
|
||||
status.runStatus ?? "-",
|
||||
status.error ?? "-",
|
||||
].join(" | ");
|
||||
}
|
||||
|
||||
export function renderMachineSessionControlView(container, view = {}) {
|
||||
if (!container) {
|
||||
throw new Error("A control view container is required.");
|
||||
}
|
||||
|
||||
const document = container.ownerDocument;
|
||||
container.textContent = "";
|
||||
|
||||
const statusNode = document.createElement("div");
|
||||
statusNode.dataset.controlViewStatus = "";
|
||||
statusNode.textContent = statusText(view.status);
|
||||
container.appendChild(statusNode);
|
||||
|
||||
const sectionsNode = document.createElement("div");
|
||||
sectionsNode.dataset.controlViewSections = "";
|
||||
container.appendChild(sectionsNode);
|
||||
|
||||
const sectionNodes = [];
|
||||
for (const section of view.sections ?? []) {
|
||||
const sectionNode = document.createElement("section");
|
||||
sectionNode.dataset.sectionId = section.id;
|
||||
sectionNode.dataset.controlViewSectionId = section.id;
|
||||
|
||||
const heading = document.createElement("h3");
|
||||
heading.textContent = section.title;
|
||||
sectionNode.appendChild(heading);
|
||||
|
||||
const list = document.createElement("dl");
|
||||
for (const row of section.rows ?? []) {
|
||||
const term = document.createElement("dt");
|
||||
term.textContent = row.label;
|
||||
const def = document.createElement("dd");
|
||||
def.dataset.controlViewRow = row.label;
|
||||
def.textContent = displayValue(row.value);
|
||||
list.append(term, def);
|
||||
}
|
||||
|
||||
sectionNode.appendChild(list);
|
||||
sectionsNode.appendChild(sectionNode);
|
||||
sectionNodes.push(sectionNode);
|
||||
}
|
||||
|
||||
return {
|
||||
statusNode,
|
||||
sectionsNode,
|
||||
sectionNodes,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user