diff options
| author | Jeff Carr <[email protected]> | 2025-09-14 05:50:55 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-09-14 05:50:55 -0500 |
| commit | 907fea439261c5b51cfc086a0e2c2689b826b103 (patch) | |
| tree | d6b20bb2e9912f1d3b2686d36a228ca47095e7c7 /tablePB.go | |
| parent | c13e84a805869af262216f94674aae13b5d3b086 (diff) | |
/s/Row/Col/
Diffstat (limited to 'tablePB.go')
| -rw-r--r-- | tablePB.go | 133 |
1 files changed, 133 insertions, 0 deletions
@@ -3,10 +3,143 @@ package cobol import ( + "fmt" + "time" + + "go.wit.com/lib/gui/shell" "go.wit.com/lib/protobuf/guipb" "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) { 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 } |
