From 27d613b594279fdcb45c67e435dc586eee7d52bd Mon Sep 17 00:00:00 2001 From: "anton.strover" Date: Fri, 29 Aug 2025 10:49:22 +0100 Subject: [PATCH 1/7] remove carried away-ness --- .../Charts/StatusPageBarChart/index.jsx | 38 ++++++++++--------- .../Status/Components/MonitorsList/index.jsx | 18 ++++++--- client/src/Pages/StatusPage/Status/index.jsx | 5 ++- .../src/db/mongo/modules/statusPageModule.js | 11 ++++++ 4 files changed, 49 insertions(+), 23 deletions(-) diff --git a/client/src/Components/Charts/StatusPageBarChart/index.jsx b/client/src/Components/Charts/StatusPageBarChart/index.jsx index e912934a0..0e14bce88 100644 --- a/client/src/Components/Charts/StatusPageBarChart/index.jsx +++ b/client/src/Components/Charts/StatusPageBarChart/index.jsx @@ -1,7 +1,7 @@ import { useTheme } from "@emotion/react"; import { Box, Stack, Tooltip, Typography } from "@mui/material"; import { formatDateWithTz } from "../../../Utils/timeUtils"; -import { useEffect, useState } from "react"; +import { useEffect, useState, forwardRef } from "react"; import { useSelector } from "react-redux"; import PropTypes from "prop-types"; @@ -17,23 +17,27 @@ import PropTypes from "prop-types"; * @returns {JSX.Element} The Bar component. */ -const Bar = ({ width, height, backgroundColor, borderRadius, children }) => { - const theme = useTheme(); +const Bar = forwardRef( + ({ width, height, backgroundColor, borderRadius, children, ...otherProps }, ref) => { + const theme = useTheme(); - return ( - - {children} - - ); -}; + return ( + + {children} + + ); + } +); Bar.propTypes = { width: PropTypes.string.isRequired, diff --git a/client/src/Pages/StatusPage/Status/Components/MonitorsList/index.jsx b/client/src/Pages/StatusPage/Status/Components/MonitorsList/index.jsx index 1097cf1da..545974c57 100644 --- a/client/src/Pages/StatusPage/Status/Components/MonitorsList/index.jsx +++ b/client/src/Pages/StatusPage/Status/Components/MonitorsList/index.jsx @@ -11,7 +11,12 @@ import PropTypes from "prop-types"; import { useSelector } from "react-redux"; -const MonitorsList = ({ isLoading = false, shouldRender = true, monitors = [] }) => { +const MonitorsList = ({ + isLoading = false, + shouldRender = true, + monitors = [], + statusPage = {}, +}) => { const theme = useTheme(); const { determineState } = useMonitorUtils(); @@ -40,10 +45,12 @@ const MonitorsList = ({ isLoading = false, shouldRender = true, monitors = [] }) alignItems="center" gap={theme.spacing(20)} > - - - - + {statusPage.showCharts !== false && ( + + + + )} + { /> {t("statusPageStatusServiceStatus")} - + {link} ); diff --git a/server/src/db/mongo/modules/statusPageModule.js b/server/src/db/mongo/modules/statusPageModule.js index 10710d0f7..aadde0c81 100755 --- a/server/src/db/mongo/modules/statusPageModule.js +++ b/server/src/db/mongo/modules/statusPageModule.js @@ -162,6 +162,14 @@ class StatusPageModule { as: "monitors.checks", }, }, + { + $lookup: { + from: "monitorstats", + localField: "monitors._id", + foreignField: "monitorId", + as: "monitors.stats", + }, + }, { $addFields: { "monitors.orderIndex": { @@ -181,6 +189,9 @@ class StatusPageModule { }, }, }, + "monitors.uptimePercentage": { + $arrayElemAt: ["$monitors.stats.uptimePercentage", 0], + }, }, }, { $match: { "monitors.orderIndex": { $ne: -1 } } }, From ad7f469e06f834fac6e339b1b553d5675c2b22c5 Mon Sep 17 00:00:00 2001 From: "anton.strover" Date: Fri, 5 Sep 2025 16:27:48 +0100 Subject: [PATCH 2/7] add display name for bar --- client/src/Components/Charts/StatusPageBarChart/index.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/Components/Charts/StatusPageBarChart/index.jsx b/client/src/Components/Charts/StatusPageBarChart/index.jsx index 0e14bce88..a28db760f 100644 --- a/client/src/Components/Charts/StatusPageBarChart/index.jsx +++ b/client/src/Components/Charts/StatusPageBarChart/index.jsx @@ -39,6 +39,8 @@ const Bar = forwardRef( } ); +Bar.displayName = "Bar"; + Bar.propTypes = { width: PropTypes.string.isRequired, height: PropTypes.string.isRequired, From 4e78de9da2596a98c643ef9a457c80dcc19a6d75 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 8 Sep 2025 06:42:36 -0700 Subject: [PATCH 3/7] throw error if present --- server/src/service/infrastructure/networkService.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/src/service/infrastructure/networkService.js b/server/src/service/infrastructure/networkService.js index d1a1ff108..50cf16b85 100644 --- a/server/src/service/infrastructure/networkService.js +++ b/server/src/service/infrastructure/networkService.js @@ -75,6 +75,9 @@ class NetworkService { const { response, responseTime, error } = await this.timeRequest(() => this.ping.promise.probe(monitor.url)); if (!response) { + if (error) { + throw error; + } throw new Error("Ping failed - no result returned"); } From a0eba89f346d0f9eea3595e19f3bd24d337e0ff7 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 8 Sep 2025 06:43:35 -0700 Subject: [PATCH 4/7] bump version --- client/vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/vite.config.js b/client/vite.config.js index bc2ab42a4..38b7a81ed 100644 --- a/client/vite.config.js +++ b/client/vite.config.js @@ -5,7 +5,7 @@ import { execSync } from "child_process"; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ""); - let version = "3.1.5"; + let version = "3.1.6"; return { base: "/", From 5dcbae55f4bea260befce1a24580e0bb37a85ef9 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 8 Sep 2025 06:57:10 -0700 Subject: [PATCH 5/7] install ping --- docker/coolify/server.Dockerfile | 5 +++++ docker/dev/server.Dockerfile | 5 +++++ docker/dist-arm/server.Dockerfile | 5 +++++ docker/dist-mono/server.Dockerfile | 5 +++++ docker/prod/server.Dockerfile | 5 +++++ docker/staging/server.Dockerfile | 5 +++++ 6 files changed, 30 insertions(+) diff --git a/docker/coolify/server.Dockerfile b/docker/coolify/server.Dockerfile index 6cb685571..238bd404c 100755 --- a/docker/coolify/server.Dockerfile +++ b/docker/coolify/server.Dockerfile @@ -1,5 +1,10 @@ FROM node:20-slim +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /app COPY ../../package*.json ./ diff --git a/docker/dev/server.Dockerfile b/docker/dev/server.Dockerfile index 0108588e3..d24bff63f 100755 --- a/docker/dev/server.Dockerfile +++ b/docker/dev/server.Dockerfile @@ -1,5 +1,10 @@ FROM node:20-slim +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /app COPY ./server/package*.json ./ diff --git a/docker/dist-arm/server.Dockerfile b/docker/dist-arm/server.Dockerfile index 3aee87abd..3a4aa755d 100644 --- a/docker/dist-arm/server.Dockerfile +++ b/docker/dist-arm/server.Dockerfile @@ -3,6 +3,11 @@ # --------------------- FROM node:24-slim AS frontend-build +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /app/client COPY client/package.json ./ diff --git a/docker/dist-mono/server.Dockerfile b/docker/dist-mono/server.Dockerfile index 778c822f6..7304d9995 100644 --- a/docker/dist-mono/server.Dockerfile +++ b/docker/dist-mono/server.Dockerfile @@ -1,5 +1,10 @@ FROM node:20-slim AS frontend-build +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /app/client COPY client/package*.json ./ diff --git a/docker/prod/server.Dockerfile b/docker/prod/server.Dockerfile index 672f8be0b..b78de2e33 100755 --- a/docker/prod/server.Dockerfile +++ b/docker/prod/server.Dockerfile @@ -1,5 +1,10 @@ FROM node:20-slim +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + ENV NODE_OPTIONS="--max-old-space-size=2048" WORKDIR /app diff --git a/docker/staging/server.Dockerfile b/docker/staging/server.Dockerfile index 672f8be0b..b78de2e33 100755 --- a/docker/staging/server.Dockerfile +++ b/docker/staging/server.Dockerfile @@ -1,5 +1,10 @@ FROM node:20-slim +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + ENV NODE_OPTIONS="--max-old-space-size=2048" WORKDIR /app From 68a16257c621c83676c3d18c0079a74d5624f261 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 8 Sep 2025 07:09:39 -0700 Subject: [PATCH 6/7] add ping to dist --- docker/dist/server.Dockerfile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docker/dist/server.Dockerfile b/docker/dist/server.Dockerfile index 0108588e3..d24bff63f 100755 --- a/docker/dist/server.Dockerfile +++ b/docker/dist/server.Dockerfile @@ -1,5 +1,10 @@ FROM node:20-slim +# Install ping +RUN apt-get update \ + && apt-get install -y iputils-ping \ + && rm -rf /var/lib/apt/lists/* + WORKDIR /app COPY ./server/package*.json ./ From 41f64ca9fe106f9ea3a710844ba1344fcbbbefb9 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 8 Sep 2025 07:10:29 -0700 Subject: [PATCH 7/7] bump version --- client/vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/vite.config.js b/client/vite.config.js index 38b7a81ed..a90b67462 100644 --- a/client/vite.config.js +++ b/client/vite.config.js @@ -5,7 +5,7 @@ import { execSync } from "child_process"; export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ""); - let version = "3.1.6"; + let version = "3.1.7"; return { base: "/",