summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-14 05:50:55 -0500
committerJeff Carr <[email protected]>2025-09-14 05:50:55 -0500
commit907fea439261c5b51cfc086a0e2c2689b826b103 (patch)
treed6b20bb2e9912f1d3b2686d36a228ca47095e7c7
parentc13e84a805869af262216f94674aae13b5d3b086 (diff)
/s/Row/Col/
-rw-r--r--tablePB.go133
1 files changed, 133 insertions, 0 deletions
diff --git a/tablePB.go b/tablePB.go
index 8cdaa38..be757d5 100644
--- a/tablePB.go
+++ b/tablePB.go
@@ -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
}