@@ -2,6 +2,11 @@ import { useQuery } from "@tanstack/react-query";
22import React from "react" ;
33import { useLocation } from "react-router" ;
44import { RouteQuery } from "../../utils/Loader" ;
5+ import {
6+ fullLocalizedDateFromTimestampOrISODate ,
7+ formatSecondsDuration ,
8+ } from "../../utils/utils" ;
9+
510import UserEvolutionChart , { UserEvolutionData } from "./UserEvolutionChart" ;
611
712type CurrentStatusLoaderData = {
@@ -12,16 +17,23 @@ type CurrentStatusLoaderData = {
1217 label : string ;
1318 } [ ] ;
1419 userCount : number ;
20+ serviceStatus : {
21+ time : number ;
22+ dump_age : number ;
23+ stats_age : number ;
24+ sitewide_stats_age : number ;
25+ incoming_listen_count : number ;
26+ } ;
1527 userCountEvolution : UserEvolutionData [ ] ;
16- load : string ;
1728} ;
1829
1930export default function CurrentStatus ( ) {
2031 const location = useLocation ( ) ;
2132 const { data } = useQuery < CurrentStatusLoaderData > (
2233 RouteQuery ( [ "current-status" ] , location . pathname )
2334 ) ;
24- const { userCount, listenCount, listenCountsPerDay, load } = data || { } ;
35+ const { userCount, listenCount, listenCountsPerDay, serviceStatus } =
36+ data || { } ;
2537 return (
2638 < >
2739 < h2 className = "page-title" > Current status</ h2 >
@@ -88,10 +100,58 @@ export default function CurrentStatus() {
88100 doc.
89101 </ p >
90102
91- < h3 > load average</ h3 >
92-
93- < p > Current server load average</ p >
94- < div className = "border p-4 rounded bg-body-tertiary" > { load } </ div >
103+ < h3 > Current Service Status</ h3 >
104+ < table className = "table table-border table-sm table-striped" >
105+ < thead >
106+ < tr >
107+ < th > Field</ th >
108+ < th > Value</ th >
109+ </ tr >
110+ </ thead >
111+ < tbody >
112+ { serviceStatus && (
113+ < tr >
114+ < td > Last Updated</ td >
115+ < td >
116+ { fullLocalizedDateFromTimestampOrISODate (
117+ new Date ( serviceStatus . time * 1000 )
118+ ) }
119+ </ td >
120+ </ tr >
121+ ) }
122+ { serviceStatus && (
123+ < tr >
124+ < td > Database Dump Age</ td >
125+ < td > { formatSecondsDuration ( serviceStatus . dump_age ) } </ td >
126+ </ tr >
127+ ) }
128+ { serviceStatus && (
129+ < tr >
130+ < td > Stats Age</ td >
131+ < td > { formatSecondsDuration ( serviceStatus . stats_age ) } </ td >
132+ </ tr >
133+ ) }
134+ { serviceStatus && (
135+ < tr >
136+ < td > Sitewide Stats Age</ td >
137+ < td >
138+ { formatSecondsDuration ( serviceStatus . sitewide_stats_age ) }
139+ </ td >
140+ </ tr >
141+ ) }
142+ { serviceStatus && (
143+ < tr >
144+ < td > Incoming Listen Count</ td >
145+ < td >
146+ { new Intl . NumberFormat ( ) . format (
147+ serviceStatus . incoming_listen_count
148+ ) } { " " }
149+ listens
150+ </ td >
151+ </ tr >
152+ ) }
153+ </ tbody >
154+ </ table >
95155 </ div >
96156 </ div >
97157 </ >
0 commit comments