Eventanzeige: Events im Modal auf den aktuellen Tag filtern
Das Event-Modal zeigte bisher die volle vom Server gelieferte Liste (bis zu 200 Events) ungefiltert an und war dadurch schnell unuebersichtlich. filterEventsForToday() schraenkt die Anzeige auf Events des aktuellen Kalendertags (lokale Zeitzone, wie formatEventTime()) ein. Schliesst #100 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
a62bb384af
commit
4eb80f603d
3 changed files with 50 additions and 2 deletions
|
|
@ -23,6 +23,7 @@ import {
|
|||
formatEventLineText,
|
||||
truncateToWidth,
|
||||
buildEventModalContent,
|
||||
filterEventsForToday,
|
||||
buildSystemModalContent,
|
||||
buildKpiTiles,
|
||||
buildKpiModalContent,
|
||||
|
|
@ -2386,7 +2387,7 @@ export function renderOfficeScene(container, data = {}) {
|
|||
}
|
||||
|
||||
const wallGroup = renderMonitorWall(systems, events, displayKpis, {
|
||||
onEventsClick: () => openModal(buildEventModalContent(events), renderEventModalBody),
|
||||
onEventsClick: () => openModal(buildEventModalContent(filterEventsForToday(events)), renderEventModalBody),
|
||||
onSystemsClick: () => openModal(buildSystemModalContent(systems), renderSystemModalBody),
|
||||
// Issue #70: die aktuell gezeigten Systeme wandern mit ins Modal - daran erkennt es,
|
||||
// welche Kacheln zu keinem konfigurierten Host mehr gehoeren.
|
||||
|
|
|
|||
|
|
@ -335,7 +335,31 @@ export function truncateToWidth(value, availableWidth, charWidth = EVENT_LINE_CH
|
|||
}
|
||||
|
||||
/**
|
||||
* Inhaltsmodell fuer das Event-Monitor-Modal: volle Liste (kein MAX_EVENT_LINES-Limit).
|
||||
* Filtert Events auf den aktuellen Kalendertag (Issue #100: die volle Eventliste im Modal
|
||||
* lief sonst unbegrenzt zurueck und wurde dadurch unuebersichtlich lang). "Aktueller Tag"
|
||||
* meint wie bei formatEventTime() die lokale Zeitzone des Browsers (F16), nicht UTC.
|
||||
*
|
||||
* @param {Array<{occurred_at: string}>} events
|
||||
* @param {Date} [now]
|
||||
* @returns {Array<object>}
|
||||
*/
|
||||
export function filterEventsForToday(events = [], now = new Date()) {
|
||||
return events.filter((event) => {
|
||||
const occurredAt = new Date(event.occurred_at);
|
||||
if (Number.isNaN(occurredAt.getTime())) {
|
||||
return false;
|
||||
}
|
||||
return (
|
||||
occurredAt.getFullYear() === now.getFullYear() &&
|
||||
occurredAt.getMonth() === now.getMonth() &&
|
||||
occurredAt.getDate() === now.getDate()
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Inhaltsmodell fuer das Event-Monitor-Modal: volle Liste des aktuellen Tages (kein
|
||||
* MAX_EVENT_LINES-Limit, aber auf heute gefiltert, siehe filterEventsForToday()).
|
||||
*
|
||||
* @param {Array<object>} events
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import {
|
|||
truncateToWidth,
|
||||
EVENT_LINE_CHAR_WIDTH,
|
||||
buildEventModalContent,
|
||||
filterEventsForToday,
|
||||
buildSystemModalContent,
|
||||
systemsWithoutHostConfig,
|
||||
formatSystemCheckTime,
|
||||
|
|
@ -350,6 +351,28 @@ test("buildEventModalContent zeigt die volle Liste (kein MAX_EVENT_LINES-Limit)"
|
|||
assert.equal(content.items[0].systemId, "srv1");
|
||||
});
|
||||
|
||||
test("filterEventsForToday behaelt nur Events vom aktuellen Kalendertag (lokale Zeitzone, F16)", () => {
|
||||
const now = new Date("2026-07-27T10:00:00");
|
||||
const events = [
|
||||
{ id: "heute-frueh", occurred_at: "2026-07-27T00:05:00" },
|
||||
{ id: "heute-spaet", occurred_at: "2026-07-27T23:55:00" },
|
||||
{ id: "gestern", occurred_at: "2026-07-26T23:59:00" },
|
||||
{ id: "morgen", occurred_at: "2026-07-28T00:00:00" },
|
||||
{ id: "ungueltig", occurred_at: "nicht-valide" },
|
||||
];
|
||||
const filtered = filterEventsForToday(events, now);
|
||||
assert.deepEqual(
|
||||
filtered.map((e) => e.id),
|
||||
["heute-frueh", "heute-spaet"]
|
||||
);
|
||||
});
|
||||
|
||||
test("filterEventsForToday liefert eine leere Liste, wenn kein Event von heute ist", () => {
|
||||
const now = new Date("2026-07-27T10:00:00");
|
||||
const events = [{ id: "gestern", occurred_at: "2026-07-26T10:00:00" }];
|
||||
assert.deepEqual(filterEventsForToday(events, now), []);
|
||||
});
|
||||
|
||||
test("buildSystemModalContent uebernimmt Status/Detail je System", () => {
|
||||
const content = buildSystemModalContent([
|
||||
{ id: "srv1", name: "Webserver", status: "ok", type: "host", detail: null, last_check_at: "t" },
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue