diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 8573226f8..d5f8aaa7f 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -244,6 +244,8 @@ router.get("/api/badge/:id/:type", cache("5 minutes"), async (request, response) const badgeValues = {}; if (!publicMonitor) { + // return a "n/a" badge in grey, if monitor is not public / not available / non exsitant + badgeValues.message = "N/A"; badgeValues.color = "#CCCCCC"; } else { @@ -261,9 +263,9 @@ router.get("/api/badge/:id/:type", cache("5 minutes"), async (request, response) badgeValues.message = [prefix, `${uptime * 100} %`, suffix] .filter((part) => part ?? part !== "") .join(""); - } + // build the svg based on given values const svg = makeBadge(badgeValues); response.type("image/svg+xml"); diff --git a/server/util-server.js b/server/util-server.js index 3f2918937..838e597d7 100644 --- a/server/util-server.js +++ b/server/util-server.js @@ -372,6 +372,16 @@ exports.errorLog = (error, outputToConsole = true) => { } catch (_) { } }; +/** + * Returns a color code in hex format based on a given percentage: + * 0% => hue = 10 => red + * 100% => hue = 90 => green + * + * @param {number} percentage, float, 0 to 1 + * @param {number} maxHue, int + * @param {number} minHue, int + * @returns {string}, hex value + */ exports.percentageToColor = (percentage, maxHue = 90, minHue = 10) => { const hue = percentage * (maxHue - minHue) + minHue; try {