Show device count on rack cards in overview
Each rack card now displays the number of devices inside (racked + unplaced). Introduced a RackCard wrapper in the overview handler to pair each rack with its precomputed count.master
parent
444441861b
commit
3434d02e78
|
|
@ -7,8 +7,13 @@ import (
|
|||
"lostcavewireplanner/internal/models"
|
||||
)
|
||||
|
||||
type RackCard struct {
|
||||
Rack models.Rack
|
||||
DeviceCount int
|
||||
}
|
||||
|
||||
type OverviewData struct {
|
||||
Racks []models.Rack
|
||||
Racks []RackCard
|
||||
Devices []models.Device
|
||||
Connections []models.Connection
|
||||
AllModels []models.DeviceModel
|
||||
|
|
@ -34,8 +39,22 @@ func (h *Handlers) Overview(w http.ResponseWriter, r *http.Request) {
|
|||
allModels = []models.DeviceModel{}
|
||||
}
|
||||
|
||||
var rackCards []RackCard
|
||||
for _, r := range racks {
|
||||
racked, _ := h.Store.DeviceGetByRackID(r.ID)
|
||||
unracked, _ := h.Store.DeviceGetUnrackedByRackID(r.ID)
|
||||
count := 0
|
||||
if racked != nil {
|
||||
count += len(racked)
|
||||
}
|
||||
if unracked != nil {
|
||||
count += len(unracked)
|
||||
}
|
||||
rackCards = append(rackCards, RackCard{Rack: r, DeviceCount: count})
|
||||
}
|
||||
|
||||
h.render(w, "overview.html", OverviewData{
|
||||
Racks: racks,
|
||||
Racks: rackCards,
|
||||
Devices: devices,
|
||||
Connections: connections,
|
||||
AllModels: allModels,
|
||||
|
|
@ -90,8 +109,20 @@ func renderOverviewError(h *Handlers, w http.ResponseWriter, errMsg string) {
|
|||
if allModels == nil {
|
||||
allModels = []models.DeviceModel{}
|
||||
}
|
||||
data := OverviewData{Racks: racks, Devices: devices, Connections: connections, AllModels: allModels, Error: errMsg}
|
||||
h.render(w, "overview.html", data)
|
||||
var rackCards []RackCard
|
||||
for _, r := range racks {
|
||||
racked, _ := h.Store.DeviceGetByRackID(r.ID)
|
||||
unracked, _ := h.Store.DeviceGetUnrackedByRackID(r.ID)
|
||||
count := 0
|
||||
if racked != nil {
|
||||
count += len(racked)
|
||||
}
|
||||
if unracked != nil {
|
||||
count += len(unracked)
|
||||
}
|
||||
rackCards = append(rackCards, RackCard{Rack: r, DeviceCount: count})
|
||||
}
|
||||
h.render(w, "overview.html", OverviewData{Racks: rackCards, Devices: devices, Connections: connections, AllModels: allModels, Error: errMsg})
|
||||
}
|
||||
|
||||
func (h *Handlers) renderError(w http.ResponseWriter, page string, errMsg string) {
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
<h2>Racks</h2>
|
||||
<div class="grid">
|
||||
{{range .Racks}}
|
||||
<a href="/racks/{{.ID}}" class="card">
|
||||
<strong>{{.Name}}</strong>
|
||||
<span>{{.RackType}} / {{.Depth}} / {{.HeightUnits}}U</span>
|
||||
{{if .Comment}}<small>{{.Comment}}</small>{{end}}
|
||||
<a href="/racks/{{.Rack.ID}}" class="card">
|
||||
<strong>{{.Rack.Name}}</strong>
|
||||
<span>{{.Rack.RackType}} / {{.Rack.Depth}} / {{.Rack.HeightUnits}}U · {{.DeviceCount}} device{{if ne .DeviceCount 1}}s{{end}}</span>
|
||||
{{if .Rack.Comment}}<small>{{.Rack.Comment}}</small>{{end}}
|
||||
</a>
|
||||
{{else}}
|
||||
<div class="empty-state">No racks yet. Create one below.</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue