42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
function e(e) {
|
|
if (typeof e != `number` && (typeof e != `string` || !e.trim())) return null;
|
|
let t = Number(e);
|
|
return Number.isFinite(t) ? t : null;
|
|
}
|
|
function t(t, n) {
|
|
let r = t.list ?? [],
|
|
i = t.label ?? [],
|
|
a = i.findIndex((e) => /已用|使用|used|usage|utilization/i.test(e)),
|
|
o = (t) => {
|
|
let n = e(t);
|
|
return n === null
|
|
? null
|
|
: Number(Math.min(100, Math.max(0, n)).toFixed(2));
|
|
},
|
|
s = (e) => e.map((e) => String(e.time ?? ``).slice(11, 16));
|
|
if (n === `cpu` || /%|percent/i.test(t.unit ?? ``)) {
|
|
let e = r[n === `memory` && a >= 0 ? a : 0] ?? [];
|
|
return {
|
|
labels: s(e),
|
|
data: e.map((e) => o(e.value)),
|
|
};
|
|
}
|
|
let c = i.findIndex((e) => /总|total|allocated/i.test(e)),
|
|
l = c >= 0 ? c : 0,
|
|
u = i.findIndex((e) => /空闲|可用|free|available/i.test(e)),
|
|
d = a >= 0 ? a : u >= 0 ? u : 1,
|
|
f = r[l] ?? [],
|
|
p = new Map((r[d] ?? []).map((e) => [String(e.time ?? ``), e.value]));
|
|
return {
|
|
labels: s(f),
|
|
data: f.map((t) => {
|
|
let n = e(t.value),
|
|
r = t.time ? e(p.get(t.time)) : null;
|
|
if (l === d || n === null || n <= 0 || r === null || r < 0) return null;
|
|
let i = a < 0 && u >= 0 ? n - r : r;
|
|
return o((i / n) * 100);
|
|
}),
|
|
};
|
|
}
|
|
export { t as n, e as t };
|