import { apiFetch } from "./api.js"; import { dom } from "./dom.js"; import { state } from "./state.js"; function formatTime(value) { if (!value) { return "--"; } return value; } export function renderEvents() { dom.eventList.innerHTML = ""; if (!state.events.length) { dom.eventList.innerHTML = '
暂无事件
'; return; } state.events.forEach((item) => { const row = document.createElement("div"); row.className = "event-card"; row.innerHTML = `
${(item.level || "info").toUpperCase()}${formatTime(item.created_at)}${item.event_type}
${item.message}
`; dom.eventList.appendChild(row); }); } function matchesCurrentFilter(item) { if (state.selectedUnitId && item.unit_id !== state.selectedUnitId) { return false; } return true; } export function prependEvent(item) { if (!matchesCurrentFilter(item)) { return; } state.events = [item, ...state.events.filter((existing) => existing.id !== item.id)].slice(0, 20); renderEvents(); } export async function loadEvents() { const params = new URLSearchParams({ page: "1", page_size: "20", }); if (state.selectedUnitId) { params.set("unit_id", state.selectedUnitId); } const response = await apiFetch(`/api/event?${params.toString()}`); state.events = response.data || []; renderEvents(); }