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.
This commit is contained in:
Doruk 2025-06-14 12:02:37 +02:00
parent b441308545
commit ebd47f1a45
3 changed files with 14 additions and 8 deletions

View file

@ -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,
};
}

View file

@ -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,
]);
}

View file

@ -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;