import { qs } from "./dom.js"; export function renderTrend(events = []) { const days = Array.from({ length: 7 }, (_, index) => { const date = new Date(); date.setDate(date.getDate() - (6 - index)); return { key: date.toISOString().slice(0, 10), label: `${date.getMonth() + 1}/${date.getDate()}`, fire: 0, smoke: 0, }; }); events.forEach((event) => { const classes = event.classes || []; const day = days.find((item) => item.key === String(event.created_at).slice(0, 10)); if (!day) return; if (classes.includes("fire")) day.fire += 1; if (classes.includes("smoke")) day.smoke += 1; }); const width = 720; const height = 225; const padding = { left: 34, right: 12, top: 14, bottom: 28 }; const maxValue = Math.max(3, ...days.flatMap((day) => [day.fire, day.smoke])); const x = (index) => padding.left + index * ((width - padding.left - padding.right) / 6); const y = (value) => height - padding.bottom - value * ((height - padding.top - padding.bottom) / maxValue); const path = (key) => days.map((day, index) => `${index ? "L" : "M"}${x(index)},${y(day[key])}`).join(" "); const gridValues = [0, Math.ceil(maxValue / 2), maxValue]; qs("#trendChart").innerHTML = `最近七天火焰与烟雾告警趋势${gridValues.map((value) => `${value}`).join("")}${days.map((day, index) => `${day.label}`).join("")}`; }