From 460093026a28744acf24cd176f83674d5ead63eb Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 21 Nov 2024 17:53:22 -0500 Subject: server dashboard: display duty cycle --- server/dashboard.go | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'server/dashboard.go') diff --git a/server/dashboard.go b/server/dashboard.go index abe68f1..df71edb 100644 --- a/server/dashboard.go +++ b/server/dashboard.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "github.com/sam-rba/share" "html/template" "log" "net/http" @@ -20,7 +21,16 @@ const dashboardHtml = ` {{ printf "%.1f%%" .Average }} {{- else -}} unknown - {{- end }}

+ {{- end -}} +

+

Duty cycle: + {{/* A value less than 0 means no data. */}} + {{- if ge .DutyCycle 0.0 -}} + {{ printf "%.1f%%" .DutyCycle }} + {{- else -}} + unknown + {{- end -}} +

{{ range $id, $humidity := .Rooms }} @@ -43,12 +53,14 @@ const dashboardHtml = ` var dashboard = template.Must(template.New("dashboard").Parse(dashboardHtml)) type Dashboard struct { - Average Humidity - Rooms map[RoomID]Humidity + Average Humidity + DutyCycle DutyCycle + Rooms map[RoomID]Humidity } type DashboardHandler struct { - Building + building Building + dutyCycle share.Val[DutyCycle] } func (h DashboardHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { @@ -60,21 +72,28 @@ func (h DashboardHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { return } - db := newDashboard(h.Building) + db := h.buildDashboard() err := dashboard.Execute(w, db) if err != nil { log.Println(err) } } -func newDashboard(b Building) Dashboard { - average, ok := b.average() +func (h DashboardHandler) buildDashboard() Dashboard { + average, ok := h.building.average() if !ok { average = -1 } + var duty DutyCycle + if dutyp, ok := h.dutyCycle.TryGet(); ok { + duty = *dutyp + } else { + duty = -1 + } + rooms := make(map[RoomID]Humidity) - for id, record := range b { + for id, record := range h.building { c := make(chan Humidity) record.getRecent <- c humidity, ok := <-c @@ -84,5 +103,5 @@ func newDashboard(b Building) Dashboard { rooms[id] = humidity } - return Dashboard{average, rooms} + return Dashboard{average, duty, rooms} } -- cgit v1.2.3
RoomHumidity