Compare commits

..

No commits in common. "guimaster" and "v0.22.33" have entirely different histories.

1 changed files with 17 additions and 102 deletions

119
table.go
View File

@ -120,10 +120,10 @@ func (me *TreeInfo) updateTable(t *guipb.Table) {
var w int = 0
for _, name := range t.Order {
// log.Info("got order:", t.Title, name)
if me.addTableCol(t, grid, name, w) {
if me.addTableRow(t, grid, name, w) {
// log.Info("tree:row() COLUMN GOOD", t.Title, name, w, h)
} else {
log.Info("tree:row() COLUMN FAIL", t.Title, name, w, h)
log.Info("tree:row() COLOMN FAIL", t.Title, name, w, h)
}
w += 1
@ -131,8 +131,8 @@ func (me *TreeInfo) updateTable(t *guipb.Table) {
}
/*
func (me *TreeInfo) updateCol(t *guipb.Table, name string) {
for _, r := range t.StringCols {
func (me *TreeInfo) updateRow(t *guipb.Table, name string) {
for _, r := range t.StringRows {
if name == r.Header.Name {
// debugging code
// id := r.Header.Id
@ -140,10 +140,10 @@ func (me *TreeInfo) updateCol(t *guipb.Table, name string) {
// if n == nil {
// log.Info("could not find widget id", id)
// }
log.Info("tree.updateCol(string)", r.Header, "len =", len(r.Widgets))
log.Info("tree.updateRow(string)", r.Header, "len =", len(r.Widgets))
// if r.Header.Name == "Hostname" {
// }
// log.Info("tree.updateCol() found Hostnames", r.Vals)
// log.Info("tree.updateRow() found Hostnames", r.Vals)
for i, v := range r.Vals {
// log.Info("tree: Hostname Widget", i, v, w.Name)
w := r.Widgets[i]
@ -164,11 +164,11 @@ func (me *TreeInfo) updateCol(t *guipb.Table, name string) {
}
}
for _, r := range t.TimeCols {
for _, r := range t.TimeRows {
if name != r.Header.Name {
continue
}
log.Info("tree.updateCol(time)", r.Header, "len =", len(r.Widgets))
log.Info("tree.updateRow(time)", r.Header, "len =", len(r.Widgets))
for i, _ := range r.Vals {
// log.Info("tree: Hostname Widget", i, v, w.Name)
w := r.Widgets[i]
@ -215,19 +215,19 @@ func (me *TreeInfo) makeTable(t *guipb.Table) {
var w int = 0
for _, name := range t.Order {
// log.Info("got order:", t.Title, name)
if me.addTableCol(t, grid, name, w) {
if me.addTableRow(t, grid, name, w) {
// log.Info("tree:row() COLUMN GOOD", t.Title, name, w, h)
} else {
log.Log(TREEWARN, "tree:row() COLUMN FAIL", t.Title, name, w, h)
log.Log(TREEWARN, "tree:row() COLOMN FAIL", t.Title, name, w, h)
}
w += 1
}
}
func (me *TreeInfo) addTableCol(t *guipb.Table, grid *Node, name string, w int) bool {
func (me *TreeInfo) addTableRow(t *guipb.Table, grid *Node, name string, w int) bool {
var h int = 0
for _, r := range t.StringCols {
for _, r := range t.StringRows {
if name != r.Header.Name {
// log.Info("skip string row:", r.Header.Name, "!=", name)
continue
@ -245,7 +245,7 @@ func (me *TreeInfo) addTableCol(t *guipb.Table, grid *Node, name string, w int)
return true
}
for _, r := range t.ButtonCols {
for _, r := range t.ButtonRows {
if name != r.Header.Name {
// log.Info("skip string row:", r.Header.Name, "!=", name)
continue
@ -263,7 +263,7 @@ func (me *TreeInfo) addTableCol(t *guipb.Table, grid *Node, name string, w int)
return true
}
for _, r := range t.IntCols {
for _, r := range t.IntRows {
if name != r.Header.Name {
// log.Info("skip sint row:", r.Header.Name, "!=", name)
continue
@ -286,7 +286,7 @@ func (me *TreeInfo) addTableCol(t *guipb.Table, grid *Node, name string, w int)
return true
}
for _, r := range t.TimeCols {
for _, r := range t.TimeRows {
if name != r.Header.Name {
// log.Info("skip sint row:", r.Header.Name, "!=", name)
continue
@ -318,91 +318,6 @@ func (me *TreeInfo) addTableCol(t *guipb.Table, grid *Node, name string, w int)
return true
}
for _, col := range t.AnyCols {
if name != col.Header.Name {
// log.Info("skip sint row:", r.Header.Name, "!=", name)
continue
}
// log.Info("tree: Add()ing to grid here", r.Header.Id, r.Header.Name, w, h)
head := grid.makeGridLabel(col.Header, w, h)
me.Add(head)
h += 1
for _, widg := range col.Widgets {
msg, err := anypb.UnmarshalNew(widg.Val, proto.UnmarshalOptions{})
if err != nil {
log.Fatalf("failed to unmarshal: %v", err)
}
/*
var stringValue wrapperspb.StringValue
if err := msg.UnmarshalTo(&stringValue); err == nil {
// It's a string, now convert it back to a native Go string
goString := stringValue.GetValue()
fmt.Printf("Successfully unpacked string: %s\n", goString)
}
*/
switch v := msg.(type) {
// case *protobuf.StringValue:
// widg.Name = fmt.Sprintf("stringval %v", v)
case *timestamppb.Timestamp:
// fmt.Println("Unpacked Timestamp:", shell.FormatDuration(time.Since(v.AsTime())))
widg.Name = shell.FormatDuration(time.Since(v.AsTime()))
case *wrapperspb.StringValue:
/*
var stringValue wrapperspb.StringValue
if err := widg.Val.UnmarshalTo(&stringValue); err == nil {
// It's a string, now convert it back to a native Go string
goString := stringValue.GetValue()
fmt.Printf("Successfully unpacked string: %s\n", goString)
widg.Name = goString
} else {
widg.Name = "notsure"
}
*/
widg.Name = v.GetValue()
case *anypb.Any:
var anyVal *anypb.Any
anyVal = msg.(*anypb.Any)
switch col.Attr.Type {
case guipb.ColAttr_STRING:
var stringValue wrapperspb.StringValue
if err := anyVal.UnmarshalTo(&stringValue); err == nil {
// It's a string, now convert it back to a native Go string
goString := stringValue.GetValue()
// fmt.Printf("Successfully unpacked string: %s\n", goString)
widg.Name = goString
} else {
widg.Name = "anyVal str err"
}
case guipb.ColAttr_INT:
case guipb.ColAttr_TIME:
var tsProto timestamppb.Timestamp
if err := anyVal.UnmarshalTo(&tsProto); err == nil {
// It's a timestamp, now convert it back to a Go time.Time
goTime := tsProto.AsTime()
// fmt.Printf("Successfully unpacked timestamp: %v\n", goTime)
widg.Name = shell.FormatDuration(time.Since(goTime))
} else {
widg.Name = "terr"
}
default:
}
// fmt.Printf("found any! %T\n", v)
// widg.Name = v.GetValue()
default:
fmt.Printf("Unknown type: %T\n", v)
// fmt.Println("Unknown type:", v)
widg.Name = fmt.Sprintf("%v", v)
}
// log.Info("tree: Add()ing to grid here", widg.Id, widg.Name, w, h)
lab := grid.makeGridLabel(widg, w, h)
me.Add(lab)
h += 1
}
return true
}
return false
}
@ -434,13 +349,13 @@ func dumpTable(t *guipb.Table) {
for i, o := range t.Order {
log.Info("got order:", t.Title, i, o)
}
for i, r := range t.StringCols {
for i, r := range t.StringRows {
log.Info("got string row:", t.Title, i, r.Header.Name, r.Vals)
for _, v := range r.Widgets {
log.Info("tree: got string widget:", v.Id, v.Name)
}
}
for i, r := range t.IntCols {
for i, r := range t.IntRows {
log.Info("got int row:", t.Title, i, r.Header.Name, r.Vals)
for _, v := range r.Widgets {
log.Info("tree: got int widget:", v.Id, v.Val)