changes
This commit is contained in:
@@ -309,40 +309,25 @@ function renderNodeDetailCard(d) {
|
|||||||
|
|
||||||
const mem = st.memory || {};
|
const mem = st.memory || {};
|
||||||
const root = st.rootfs || {};
|
const root = st.rootfs || {};
|
||||||
const load = st.loadavg || '';
|
const load = Array.isArray(st.loadavg) ? st.loadavg.join(' ') : (st.loadavg || '');
|
||||||
|
|
||||||
// ---- SYSTEM DETAILS (zamiast "HA services")
|
// ---- SYSTEM DETAILS (new content)
|
||||||
const hw = d.hw || d.hardware || d.cpuinfo || st.cpuinfo || {};
|
const cpuinfo = st.cpuinfo || {};
|
||||||
const cpuModel = pick(
|
const boot = st['boot-info'] || st.boot_info || {};
|
||||||
hw.model, hw['model-name'], hw.model_name,
|
const curKernel = st['current-kernel'] || st.current_kernel || {};
|
||||||
st['cpu-model'], ver['cpu-model'], ver.cpu, st.cpu_model
|
const ramStr = (mem.used != null && mem.available != null && mem.total != null)
|
||||||
);
|
? `${humanBytes(mem.used)} used / ${humanBytes(mem.available)} free / ${humanBytes(mem.total)} total`
|
||||||
const arch = pick(hw.arch, ver.arch, st.architecture, st.arch);
|
: (mem.total != null ? humanBytes(mem.total) : '—');
|
||||||
const sockets = pick(hw.sockets, st.sockets);
|
|
||||||
const coresPerSocket = pick(hw.cores, st.cores_per_socket, st.cores);
|
|
||||||
const threadsPerCore = pick(hw.threads, st.threads_per_core, st.threads);
|
|
||||||
const totalCPUs = pick(st.maxcpu, hw.total_cpus, hw.cpus);
|
|
||||||
const microcode = pick(hw.microcode, st.microcode);
|
|
||||||
const bios = pick(hw.bios, st.bios_version, ver.bios);
|
|
||||||
const virt = pick(hw.virtualization, ver.virtualization, st.virtualization);
|
|
||||||
const machine = pick(ver.machine, st.machine);
|
|
||||||
const kvm = pick(ver.kvm, st.kvm);
|
|
||||||
|
|
||||||
const tech = {
|
const tech = {
|
||||||
'Kernel': pick(ver.kernel, ver.release),
|
'PVE version': pick(st.pveversion, ver.pvemanager, ver['pve-manager']),
|
||||||
'QEMU': pick(ver.qemu, ver['running-qemu']),
|
'Kernel': pick(st.kversion, curKernel.release, ver.kernel, ver.release),
|
||||||
'KVM': kvm,
|
'CPU model': pick(cpuinfo.model, st['cpu-model'], ver['cpu-model'], ver.cpu),
|
||||||
'PVE Manager': pick(ver.pvemanager, ver['pve-manager']),
|
'Architecture': pick(curKernel.machine, ver.arch, st.architecture, st.arch),
|
||||||
'Architecture': arch,
|
'RAM': ramStr,
|
||||||
'CPU model': cpuModel,
|
'Boot mode': pick(boot.mode) ? String(boot.mode).toUpperCase() : '—',
|
||||||
'Sockets': sockets,
|
'Secure Boot': (boot.secureboot === 1 || boot.secureboot === '1') ? 'enabled' :
|
||||||
'Cores/socket': coresPerSocket,
|
(boot.secureboot === 0 || boot.secureboot === '0') ? 'disabled' : '—'
|
||||||
'Threads/core': threadsPerCore,
|
|
||||||
'Total CPUs': totalCPUs,
|
|
||||||
'Microcode': microcode,
|
|
||||||
'Virtualization': virt,
|
|
||||||
'Machine': machine,
|
|
||||||
'BIOS': bios
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const top = `
|
const top = `
|
||||||
@@ -368,7 +353,7 @@ function renderNodeDetailCard(d) {
|
|||||||
</div></div></div>
|
</div></div></div>
|
||||||
<div class="col"><div class="card border-0"><div class="card-body p-2">
|
<div class="col"><div class="card border-0"><div class="card-body p-2">
|
||||||
<div class="text-muted small">Kernel / QEMU</div>
|
<div class="text-muted small">Kernel / QEMU</div>
|
||||||
<div class="fw-semibold">${safe(tech['Kernel'])} / ${safe(tech['QEMU'])}</div>
|
<div class="fw-semibold">${safe(tech['Kernel'])} / ${safe(pick(ver.qemu, ver['running-qemu']))}</div>
|
||||||
</div></div></div>
|
</div></div></div>
|
||||||
<div class="col"><div class="card border-0"><div class="card-body p-2">
|
<div class="col"><div class="card border-0"><div class="card-body p-2">
|
||||||
<div class="text-muted small">Time</div>
|
<div class="text-muted small">Time</div>
|
||||||
@@ -376,16 +361,19 @@ function renderNodeDetailCard(d) {
|
|||||||
</div></div></div>
|
</div></div></div>
|
||||||
</div>`;
|
</div>`;
|
||||||
|
|
||||||
// --- SYSTEM DETAILS GRID
|
// --- SYSTEM DETAILS GRID (requested fields)
|
||||||
const sysDetails = kvGrid(tech, Object.keys(tech), {
|
const sysDetails = kvGrid(tech, Object.keys(tech), {
|
||||||
'QEMU': 'QEMU version', 'KVM': 'KVM',
|
'PVE version': 'PVE version',
|
||||||
'CPU model': 'CPU model', 'Architecture': 'Arch',
|
'Kernel': 'Kernel version',
|
||||||
'Cores/socket': 'Cores per socket', 'Threads/core': 'Threads per core',
|
'CPU model': 'CPU model',
|
||||||
'Total CPUs': 'Total logical CPUs'
|
'Architecture': 'Arch',
|
||||||
|
'RAM': 'RAM (used/free/total)',
|
||||||
|
'Boot mode': 'Boot mode',
|
||||||
|
'Secure Boot': 'Secure Boot'
|
||||||
});
|
});
|
||||||
|
|
||||||
// Network config
|
// Network config
|
||||||
const netRows = netcfg.map(n => {
|
const netRows = ensureArr(d.network_cfg).map(n => {
|
||||||
return rowHTML([safe(n.iface || n.ifname), safe(n.type), safe(n.method || n.autostart), safe(n.bridge_ports || n.address || '—'), safe(n.cidr || n.netmask || '—'), safe(n.comments || '')]);
|
return rowHTML([safe(n.iface || n.ifname), safe(n.type), safe(n.method || n.autostart), safe(n.bridge_ports || n.address || '—'), safe(n.cidr || n.netmask || '—'), safe(n.comments || '')]);
|
||||||
});
|
});
|
||||||
const netCfgTable = `
|
const netCfgTable = `
|
||||||
@@ -397,7 +385,7 @@ function renderNodeDetailCard(d) {
|
|||||||
</div>`;
|
</div>`;
|
||||||
|
|
||||||
// Disks
|
// Disks
|
||||||
const diskRows = disks.map(dv => rowHTML([safe(dv.devpath || dv.kname || dv.dev), safe(dv.model), safe(dv.size ? humanBytes(dv.size) : '—'), safe(dv.health || dv.wearout || '—'), safe(dv.serial || '—')]));
|
const diskRows = ensureArr(d.disks).map(dv => rowHTML([safe(dv.devpath || dv.kname || dv.dev), safe(dv.model), safe(dv.size ? humanBytes(dv.size) : '—'), safe(dv.health || dv.wearout || '—'), safe(dv.serial || '—')]));
|
||||||
const diskTable = `
|
const diskTable = `
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table table-sm table-striped align-middle table-nowrap">
|
<table class="table table-sm table-striped align-middle table-nowrap">
|
||||||
@@ -407,6 +395,7 @@ function renderNodeDetailCard(d) {
|
|||||||
</div>`;
|
</div>`;
|
||||||
|
|
||||||
// Subscription
|
// Subscription
|
||||||
|
const sub = d.subscription || {};
|
||||||
const subBox = `
|
const subBox = `
|
||||||
<div class="small">
|
<div class="small">
|
||||||
<div>Status: ${badge(safe(sub.status || 'unknown'), /active|valid/i.test(sub.status || '') ? 'ok' : 'warn')}</div>
|
<div>Status: ${badge(safe(sub.status || 'unknown'), /active|valid/i.test(sub.status || '') ? 'ok' : 'warn')}</div>
|
||||||
|
Reference in New Issue
Block a user