Remove KPI trend subtitles on server dashboard.
Drop per-card trend footer text and related previous-value calculation from the server overview KPI block. Made-with: Cursor
This commit is contained in:
@@ -25,16 +25,6 @@
|
||||
let summary = $state<StatsSummaryData | null>(null);
|
||||
let sys = $state<SystemInfoData | null>(null);
|
||||
|
||||
type NodeKpiPrev = {
|
||||
uptime: number;
|
||||
conn: number;
|
||||
bad: number;
|
||||
users: number;
|
||||
handshake: number;
|
||||
};
|
||||
|
||||
let kpiPrev = $state<NodeKpiPrev | null>(null);
|
||||
|
||||
function num(v: unknown): number {
|
||||
if (typeof v === 'number' && Number.isFinite(v)) return v;
|
||||
if (typeof v === 'string' && v.trim() !== '') {
|
||||
@@ -44,38 +34,15 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
function trendFooter(current: number | null, prev: number | null, invert = false): string {
|
||||
if (current == null || prev == null || !Number.isFinite(current) || !Number.isFinite(prev)) {
|
||||
return 'первое обновление';
|
||||
}
|
||||
const delta = current - prev;
|
||||
if (delta === 0) return 'к прошлому обновлению: без изменений';
|
||||
const sign = delta > 0 ? '+' : '-';
|
||||
const absDelta = Math.abs(delta);
|
||||
const mood = invert ? (delta < 0 ? 'лучше' : 'хуже') : delta > 0 ? 'рост' : 'снижение';
|
||||
return `к прошлому обновлению: ${sign}${absDelta} (${mood})`;
|
||||
}
|
||||
|
||||
async function loadFor(a: string) {
|
||||
loading = true;
|
||||
err = null;
|
||||
try {
|
||||
const prev =
|
||||
summary && sys
|
||||
? {
|
||||
uptime: num(sys.uptime_seconds),
|
||||
conn: num(summary.connections_total),
|
||||
bad: num(summary.connections_bad_total),
|
||||
users: num(summary.configured_users),
|
||||
handshake: num(summary.handshake_timeouts_total)
|
||||
}
|
||||
: null;
|
||||
const [h, s, i] = await Promise.all([
|
||||
fetchTelemt<HealthData>(a, 'health'),
|
||||
fetchStatsSummary(a),
|
||||
fetchTelemt<SystemInfoData>(a, 'system/info')
|
||||
]);
|
||||
kpiPrev = prev;
|
||||
health = h.data;
|
||||
summary = s.data;
|
||||
sys = i.data;
|
||||
@@ -150,7 +117,6 @@
|
||||
<KpiStatCard
|
||||
accent="violet"
|
||||
label="Аптайм"
|
||||
footer={trendFooter(sys ? uptimeSec : null, kpiPrev?.uptime ?? null)}
|
||||
valueClass="text-xl"
|
||||
>
|
||||
{#snippet icon()}
|
||||
@@ -161,7 +127,6 @@
|
||||
<KpiStatCard
|
||||
accent="info"
|
||||
label="Соединения (всего)"
|
||||
footer={trendFooter(summary ? connTotal : null, kpiPrev?.conn ?? null)}
|
||||
valueClass="text-xl"
|
||||
>
|
||||
{#snippet icon()}
|
||||
@@ -172,7 +137,6 @@
|
||||
<KpiStatCard
|
||||
accent="danger"
|
||||
label="Bad connections"
|
||||
footer={trendFooter(summary ? badTotal : null, kpiPrev?.bad ?? null, true)}
|
||||
valueClass="text-xl"
|
||||
>
|
||||
{#snippet icon()}
|
||||
@@ -183,7 +147,6 @@
|
||||
<KpiStatCard
|
||||
accent="warning"
|
||||
label="Handshake timeouts"
|
||||
footer={trendFooter(summary ? handshakeT : null, kpiPrev?.handshake ?? null, true)}
|
||||
valueClass="text-xl"
|
||||
>
|
||||
{#snippet icon()}
|
||||
@@ -194,7 +157,6 @@
|
||||
<KpiStatCard
|
||||
accent="neutral"
|
||||
label="Пользователей в конфиге"
|
||||
footer={trendFooter(summary ? cfgUsers : null, kpiPrev?.users ?? null)}
|
||||
valueClass="text-xl"
|
||||
>
|
||||
{#snippet icon()}
|
||||
|
||||
Reference in New Issue
Block a user