From 5a986d1c8f4cfab60a73bae9ac6adb969b8ca646 Mon Sep 17 00:00:00 2001 From: david Date: Fri, 20 Aug 2021 14:04:09 +0000 Subject: [PATCH] more colours, add another diff, smol css chgs --- .gitignore | 3 ++ README.md | 8 +++ swarm/docker-compose.netmon.yml | 75 ++++++++++++++++++++++++++++ views/Card.jsx | 24 +++++++-- views/{DiffCard.jsx => TimeDiff.jsx} | 8 +-- 5 files changed, 110 insertions(+), 8 deletions(-) rename views/{DiffCard.jsx => TimeDiff.jsx} (92%) diff --git a/.gitignore b/.gitignore index 2390b24..98f4d4d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ db.sqlite3 data.csv public/styles/style.css swarm/.env.deploy +swarm/.env.netmon.brent +swarm/.env.netmon.josh +swarm/.env.netmon.shannon diff --git a/README.md b/README.md index d29ad5a..674aba3 100644 --- a/README.md +++ b/README.md @@ -36,3 +36,11 @@ npm install -D tailwindcss@latest postcss@latest autoprefixer@latest postcss-cli npm install tailwindcss postcss autoprefixer postcss-cli ``` + +dev outside the container + +``` +python3 -m http.server 8000 +python3 netmon.py monitor +npm run dev +``` diff --git a/swarm/docker-compose.netmon.yml b/swarm/docker-compose.netmon.yml index b6e94ce..e71baff 100644 --- a/swarm/docker-compose.netmon.yml +++ b/swarm/docker-compose.netmon.yml @@ -7,6 +7,9 @@ networks: volumes: netmon-data: + netmon-data-brent: + netmon-data-shannon: + netmon-data-josh: services: app: @@ -32,3 +35,75 @@ services: - traefik.http.routers.${netmonTraefikGrp? Variable not set}.tls=true - traefik.http.routers.${netmonTraefikGrp? Variable not set}.tls.certresolver=le - traefik.http.services.${netmonTraefikGrp? Variable not set}.loadbalancer.server.port=3000 + + brent: + image: daveplsno/netmon:latest + hostname: netmonBrent + env_file: .env.netmon.brent + volumes: + - netmon-data-brent:/app + networks: + - swarmnet-public + deploy: + restart_policy: + condition: on-failure + placement: + constraints: + - node.labels.${netmonNode? Variable not set} == true + labels: + - traefik.enable=true + - traefik.docker.network=swarmnet-public + - traefik.constraint-label=swarmnet-public + - traefik.http.routers.${netmonBrentTraefikGrp? Variable not set}.rule=Host(`${netmonBrentTraefikUrl? Variable not set}`) + - traefik.http.routers.${netmonBrentTraefikGrp? Variable not set}.entrypoints=websecure + - traefik.http.routers.${netmonBrentTraefikGrp? Variable not set}.tls=true + - traefik.http.routers.${netmonBrentTraefikGrp? Variable not set}.tls.certresolver=le + - traefik.http.services.${netmonBrentTraefikGrp? Variable not set}.loadbalancer.server.port=3000 + + shannon: + image: daveplsno/netmon:latest + hostname: netmonShannon + env_file: .env.netmon.shannon + volumes: + - netmon-data-shannon:/app + networks: + - swarmnet-public + deploy: + restart_policy: + condition: on-failure + placement: + constraints: + - node.labels.${netmonNode? Variable not set} == true + labels: + - traefik.enable=true + - traefik.docker.network=swarmnet-public + - traefik.constraint-label=swarmnet-public + - traefik.http.routers.${netmonShannonTraefikGrp? Variable not set}.rule=Host(`${netmonShannonTraefikUrl? Variable not set}`) + - traefik.http.routers.${netmonShannonTraefikGrp? Variable not set}.entrypoints=websecure + - traefik.http.routers.${netmonShannonTraefikGrp? Variable not set}.tls=true + - traefik.http.routers.${netmonShannonTraefikGrp? Variable not set}.tls.certresolver=le + - traefik.http.services.${netmonShannonTraefikGrp? Variable not set}.loadbalancer.server.port=3000 + + josh: + image: daveplsno/netmon:latest + hostname: netmonJosh + env_file: .env.netmon.josh + volumes: + - netmon-data-josh:/app + networks: + - swarmnet-public + deploy: + restart_policy: + condition: on-failure + placement: + constraints: + - node.labels.${netmonNode? Variable not set} == true + labels: + - traefik.enable=true + - traefik.docker.network=swarmnet-public + - traefik.constraint-label=swarmnet-public + - traefik.http.routers.${netmonJoshTraefikGrp? Variable not set}.rule=Host(`${netmonJoshTraefikUrl? Variable not set}`) + - traefik.http.routers.${netmonJoshTraefikGrp? Variable not set}.entrypoints=websecure + - traefik.http.routers.${netmonJoshTraefikGrp? Variable not set}.tls=true + - traefik.http.routers.${netmonJoshTraefikGrp? Variable not set}.tls.certresolver=le + - traefik.http.services.${netmonJoshTraefikGrp? Variable not set}.loadbalancer.server.port=3000 diff --git a/views/Card.jsx b/views/Card.jsx index d778453..b622c4e 100644 --- a/views/Card.jsx +++ b/views/Card.jsx @@ -1,12 +1,25 @@ const React = require('react'); -import { TimeBetweenRows } from './DiffCard'; +import { TimeDiff } from './TimeDiff'; export const Card = ({ dbdata }) => { return dbdata.reverse().map((row, index) => { const nextRow = dbdata[index + 1]; + const lastRow = dbdata.slice()[0]; + const textStyles = 'flex justify-center items-center py-2 text-sm'; return (
+ {row.id === lastRow.id ? ( +
+ {row.status === 1 ? 'yeh all good for ' : 'absolutely cooked for '} + +
+ ) : null} +
{
{row.timestamp}
{row.status === 1 ? '🟢' : '🔴'}
- {!!nextRow ? ( -
- +
+
) : null}
diff --git a/views/DiffCard.jsx b/views/TimeDiff.jsx similarity index 92% rename from views/DiffCard.jsx rename to views/TimeDiff.jsx index e390c3c..0224703 100644 --- a/views/DiffCard.jsx +++ b/views/TimeDiff.jsx @@ -1,18 +1,18 @@ const React = require('react'); const dayjs = require('dayjs'); -export const TimeBetweenRows = ({ row, nextRow }) => { +export const TimeDiff = ({ row, nextRow }) => { if (nextRow) { + const now = dayjs(); const firstDate = dayjs(row.timestamp); const secondDate = dayjs(nextRow.timestamp); - const theDiff = firstDate.diff(secondDate); + const theDiff = + row.id === nextRow.id ? now.diff(firstDate) : firstDate.diff(secondDate); const theSeconds = theDiff / 1000; const theMinutes = theSeconds / 60; const theHours = theMinutes / 60; const theDays = theHours / 24; - // console.log(theDiff, theSeconds, theMinutes, theHours, theDays); - const renderSecs = <>{theSeconds === 1 ? 'sec' : 'secs'}; const renderMins = <>{theMinutes === 1 ? 'min ' : 'mins '}; const renderHrs = <>{theHours === 1 ? 'hr ' : 'hrs '};