/s/Row/Col/

This commit is contained in:
Jeff Carr 2025-09-14 05:50:55 -05:00
parent c13e84a805
commit 907fea4392
1 changed files with 133 additions and 0 deletions

View File

@ -3,10 +3,143 @@
package cobol package cobol
import ( import (
"fmt"
"time"
"go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/guipb" "go.wit.com/lib/protobuf/guipb"
"go.wit.com/log" "go.wit.com/log"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/anypb"
"google.golang.org/protobuf/types/known/timestamppb"
"google.golang.org/protobuf/types/known/wrapperspb"
) )
func PrintTable(pb *guipb.Table) { func PrintTable(pb *guipb.Table) {
log.Info("print PB here") log.Info("print PB here")
if pb.Grid == nil {
log.Info("grid = nil")
} else {
log.Info("grid.Id =", pb.Grid.Id)
}
var h int = 0
var w int = 0
for _, name := range pb.Order {
if addTableRow(pb, name, w) {
log.Info("tree:row() COLUMN GOOD", pb.Title, name, w, h)
h += 1
} else {
log.Info("tree:row() COLOMN FAIL", pb.Title, name, w, h)
}
w += 1
}
}
func addTableRow(t *guipb.Table, name string, w int) bool {
var h int = 0
for _, r := range t.StringRows {
if name != r.Header.Name {
// log.Info("skip string row:", r.Header.Name, "!=", name)
continue
}
log.Info("tree: Add()ing to grid here", r.Header.Id, r.Header.Name, w, h)
for i, v := range r.Vals {
log.Info("String Row", i, w, v)
}
makeGridLabel(r.Header, w, h)
h += 1
for _, v := range r.Widgets {
log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h)
makeGridLabel(v, w, h)
h += 1
}
return true
}
for _, r := range t.ButtonRows {
if name != r.Header.Name {
// log.Info("skip string row:", r.Header.Name, "!=", name)
continue
}
log.Info("tree: Add()ing to grid here", r.Header.Id, r.Header.Name, w, h)
for i, v := range r.Vals {
log.Info("Button Row", i, v)
}
makeGridLabel(r.Header, w, h)
h += 1
for _, v := range r.Widgets {
log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h)
makeGridLabel(v, w, h)
h += 1
}
return true
}
for _, r := range t.IntRows {
if name != r.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)
makeGridLabel(r.Header, w, h)
h += 1
for _, v := range r.Widgets {
vi, err := extractInt64(v.Val)
if err != nil {
log.Warn("int error", err)
}
v.Name = fmt.Sprintf("%d", vi)
// log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h)
makeGridLabel(v, w, h)
h += 1
}
return true
}
for _, r := range t.TimeRows {
if name != r.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)
makeGridLabel(r.Header, w, h)
h += 1
for _, widg := range r.Widgets {
msg, err := anypb.UnmarshalNew(widg.Val, proto.UnmarshalOptions{})
if err != nil {
log.Fatalf("failed to unmarshal: %v", err)
}
switch v := msg.(type) {
case *timestamppb.Timestamp:
// fmt.Println("Unpacked Timestamp:", shell.FormatDuration(time.Since(v.AsTime())))
widg.Name = shell.FormatDuration(time.Since(v.AsTime()))
default:
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)
makeGridLabel(widg, w, h)
h += 1
}
return true
}
return false
}
func makeGridLabel(pb *guipb.Widget, w int, h int) {
log.Info("MAKE GRID LABEL", w, h, pb.Name)
}
func extractInt64(anyVal *anypb.Any) (int64, error) {
val := &wrapperspb.Int64Value{}
if err := anyVal.UnmarshalTo(val); err != nil {
return 0, err
}
return val.Value, nil
} }