{{define "title"}}Dashboard — Railyard{{end}} {{define "content"}}

Dashboard

{{template "alerts_fragment" .}}
{{template "stats_fragment" .}}
{{template "yardmaster_fragment" .}}

Ready Cars

{{template "ready_cars_fragment" .}}

Engines

{{template "engines_fragment" .}}

Tracks

{{template "tracks_fragment" .}}

Messages in queue: {{.QueueDepth}} | Auto-refreshing every 3s

{{end}} {{define "alerts_fragment"}} {{if .Escalations}}
{{len .Escalations}} escalation(s) need attention — View messages
{{end}} {{end}} {{define "stats_fragment"}}
{{.Stats.ActiveEngines}}
Active Engines
{{.Stats.OpenCars}}
Open Cars
{{.Stats.InProgressCars}}
In Progress
{{.Stats.BlockedCars}}
Blocked
{{.Stats.CompletedToday}}
Completed Today
{{.Stats.TotalTokens}}
Total Tokens
{{end}} {{define "engines_fragment"}} {{range .Engines}} {{else}} {{end}}
Engine Track Status Current Car Provider Last Activity
{{.ID}} {{.Track}} {{.Status}} {{if .CurrentCar}}{{.CurrentCar}}{{else}}—{{end}} {{.Provider}} {{timeAgo .LastActivity}}
No engines running
{{end}} {{define "tracks_fragment"}}
{{range .Tracks}}

{{.Track}}

{{if .Open}}{{.Open}} open{{end}} {{if .InProgress}}{{.InProgress}} active{{end}} {{if .Blocked}}{{.Blocked}} blocked{{end}} {{if .Done}}{{.Done}} done{{end}} {{if .Merged}}{{.Merged}} merged{{end}} {{if .Draft}}{{.Draft}} draft{{end}}

{{.Total}} total cars

{{else}}

No tracks configured

{{end}}
{{end}} {{define "ready_cars_fragment"}} {{range .ReadyCars}} {{else}} {{end}}
ID Title Track Priority Waiting
{{.ID}} {{.Title}} {{.Track}} {{.Priority}} {{timeAgo .CreatedAt}}
No ready cars
{{end}} {{define "yardmaster_fragment"}}
Yardmaster
{{if .Yardmaster}}
{{if or (eq .Yardmaster.Status "idle") (eq .Yardmaster.Status "working")}} {{.Yardmaster.Status}} {{else}} {{.Yardmaster.Status}} {{end}}
Heartbeat: {{timeAgo .Yardmaster.LastActivity}}
Uptime: {{.Yardmaster.Uptime}}
{{if .Yardmaster.CurrentCar}}
Car: {{.Yardmaster.CurrentCar}}
{{end}} {{else}}
not running
{{end}}
{{end}}