zoopb/machine.gui.go

113 lines
2.5 KiB
Go

package zoopb
import (
"go.wit.com/gui"
"go.wit.com/lib/protobuf/guipb"
"go.wit.com/log"
)
func (x *Machines) NewTable(title string) *MachinesTable {
t := new(MachinesTable)
t.x = x
pb := new(guipb.Table)
pb.Title = title
pb.Order = append(pb.Order, "Memory")
t.pb = pb
return t
}
func (t *MachinesTable) AddStringFunc(title string, f func(*Machine) string) {
t.pb.Order = append(t.pb.Order, title)
sf := new(MachineStringFunc)
sf.title = title
sf.f = f
t.stringFuncs = append(t.stringFuncs, sf)
}
func (t *MachinesTable) AddHostname() {
log.Info("zoopb: GOT TO AddHostname()")
t.pb.Order = append(t.pb.Order, "Hostname")
t.pb.Order = append(t.pb.Order, "Cpus")
t.pb.Order = append(t.pb.Order, "Memory")
}
func (mt *MachinesTable) MakeTable() {
for _, name := range mt.pb.Order {
log.Info("zoopb: looking for row name()", name)
switch name {
case "Hostname":
r := new(guipb.StringRow)
r.Header = new(guipb.Widget)
r.Header.Name = "Hostname"
all := mt.x.All()
for all.Scan() {
m := all.Next()
r.Vals = append(r.Vals, m.Hostname)
log.Info("zoopb: adding hostname", r.Vals)
}
mt.pb.StringRows = append(mt.pb.StringRows, r)
case "Cpus":
i := new(guipb.IntRow)
i.Header = new(guipb.Widget)
i.Header.Name = "Cpus"
all := mt.x.All()
for all.Scan() {
m := all.Next()
i.Vals = append(i.Vals, m.Cpus)
log.Info("zoopb: adding cpus", i.Vals)
}
mt.pb.IntRows = append(mt.pb.IntRows, i)
case "Memory":
i := new(guipb.IntRow)
i.Header = new(guipb.Widget)
i.Header.Name = "Memories"
all := mt.x.All()
for all.Scan() {
m := all.Next()
i.Vals = append(i.Vals, m.Memory)
log.Info("zoopb: adding cpus", i.Vals)
}
mt.pb.IntRows = append(mt.pb.IntRows, i)
default:
// mt.addFuncRow(name)
}
}
}
/*
func (mt *MachinesTable) addRow(name string) {
i := new(guipb.IntRow)
i.Header = new(guipb.Widget)
i.Header.Name = "Memories"
all := t.x.All()
for all.Scan() {
m := all.Next()
i.Vals = append(i.Vals, m.Memory)
log.Info("zoopb: adding cpus", i.Vals)
}
t.pb.IntRows = append(t.pb.IntRows, i)
}
*/
func (mt *MachinesTable) ShowTable() {
log.Info("zoopb.ShowTable() SENDING TO GUI")
mt.MakeTable()
gui.ShowTable(mt.pb)
}
type MachineStringFunc struct {
title string
f func(*Machine) string
}
type MachinesTable struct {
// gt *gui.NodeTable
pb *guipb.Table
x *Machines
hostnames []string
stringFuncs []*MachineStringFunc
// columns []*gui.NodeColumn
// order []*gui.NodeColumn
}