From ebd47f1a45b07590ac636a95cc4176f6b45014c0 Mon Sep 17 00:00:00 2001 From: Doruk Date: Sat, 14 Jun 2025 12:02:37 +0200 Subject: [PATCH] refactor: Clean up heartbeat range handling in status page - Removed fallback to "auto" for heartbeat bar range in the StatusPage model. - Simplified heartbeat range logic in the status page router to ensure consistent date handling. - Updated socket handler to directly assign heartbeat bar range from config. --- server/model/status_page.js | 2 +- server/routers/status-page-router.js | 18 ++++++++++++------ .../status-page-socket-handler.js | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/server/model/status_page.js b/server/model/status_page.js index 0b7948d48..6421ef13a 100644 --- a/server/model/status_page.js +++ b/server/model/status_page.js @@ -409,7 +409,7 @@ class StatusPage extends BeanModel { showPoweredBy: !!this.show_powered_by, googleAnalyticsId: this.google_analytics_tag_id, showCertificateExpiry: !!this.show_certificate_expiry, - heartbeatBarRange: this.heartbeat_bar_range || "auto", + heartbeatBarRange: this.heartbeat_bar_range, }; } diff --git a/server/routers/status-page-router.js b/server/routers/status-page-router.js index a5819d811..a0aee9978 100644 --- a/server/routers/status-page-router.js +++ b/server/routers/status-page-router.js @@ -86,24 +86,30 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques // Get the status page to determine the heartbeat range let statusPage = await R.findOne("status_page", " id = ? ", [ statusPageID ]); - let heartbeatRange = (statusPage && statusPage.heartbeat_bar_range) ? statusPage.heartbeat_bar_range : "auto"; + let heartbeatRange = statusPage ? statusPage.heartbeat_bar_range : "auto"; // Calculate the date range for heartbeats based on range setting - let dateFrom = new Date(); + let dateFrom = null; if (heartbeatRange === "auto") { // Auto mode: limit to last 100 beats (original behavior) dateFrom = null; } else if (heartbeatRange.endsWith("h")) { // Hours let hours = parseInt(heartbeatRange); - dateFrom.setHours(dateFrom.getHours() - hours); + let date = new Date(); + date.setHours(date.getHours() - hours); + dateFrom = date.toISOString().slice(0, 19).replace('T', ' '); } else if (heartbeatRange.endsWith("d")) { // Days let days = parseInt(heartbeatRange); - dateFrom.setDate(dateFrom.getDate() - days); + let date = new Date(); + date.setDate(date.getDate() - days); + dateFrom = date.toISOString().slice(0, 19).replace('T', ' '); } else { // Fallback to 90 days - dateFrom.setDate(dateFrom.getDate() - 90); + let date = new Date(); + date.setDate(date.getDate() - 90); + dateFrom = date.toISOString().slice(0, 19).replace('T', ' '); } for (let monitorID of monitorIDList) { @@ -126,7 +132,7 @@ router.get("/api/status-page/heartbeat/:slug", cache("1 minutes"), async (reques ORDER BY time DESC `, [ monitorID, - dateFrom.toISOString(), + dateFrom, ]); } diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js index d7ce962cf..15f59ee69 100644 --- a/server/socket-handlers/status-page-socket-handler.js +++ b/server/socket-handlers/status-page-socket-handler.js @@ -165,7 +165,7 @@ module.exports.statusPageSocketHandler = (socket) => { statusPage.custom_css = config.customCSS; statusPage.show_powered_by = config.showPoweredBy; statusPage.show_certificate_expiry = config.showCertificateExpiry; - statusPage.heartbeat_bar_range = config.heartbeatBarRange || "auto"; + statusPage.heartbeat_bar_range = config.heartbeatBarRange; statusPage.modified_date = R.isoDateTime(); statusPage.google_analytics_tag_id = config.googleAnalyticsId;