summaryrefslogtreecommitdiff
path: root/table.go
diff options
context:
space:
mode:
Diffstat (limited to 'table.go')
-rw-r--r--table.go96
1 files changed, 85 insertions, 11 deletions
diff --git a/table.go b/table.go
index 1ccbddd..4ddb6ed 100644
--- a/table.go
+++ b/table.go
@@ -5,6 +5,8 @@
package tree
import (
+ "fmt"
+
"go.wit.com/lib/protobuf/guipb"
"go.wit.com/log"
"go.wit.com/widget"
@@ -26,15 +28,15 @@ func (me *TreeInfo) doTable(a widget.Action) {
log.Info("unmarshal error", err, "data len =", len(a.TablePB))
return
}
- log.Info("dumpTables:")
+ log.Info("tree.doTables() start. # of tables:", len(pb.Tables))
all := pb.All()
for all.Scan() {
t := all.Next()
- for i, o := range t.Order {
- log.Info("got order:", t.Title, i, o)
- }
- dumpTable(t)
- me.ShowTable(t)
+ // for i, o := range t.Order {
+ // log.Info("got order:", t.Title, i, o)
+ // }
+ // dumpTable(t)
+ // me.ShowTable(t)
me.makeTable(t)
}
}
@@ -59,19 +61,91 @@ func (win *Node) makeWindowGrid(pb *guipb.Widget) *Node {
return AddNode(a)
}
+func (grid *Node) makeGridLabel(pb *guipb.Widget, w int, h int) *Node {
+ a := new(widget.Action)
+ a.WidgetType = widget.Label
+ a.WidgetId = int(pb.Id)
+ a.ParentId = grid.WidgetId
+ a.State.Enable = true
+ a.State.Label = pb.Name
+ a.State.AtW = w
+ a.State.AtH = h
+
+ return AddNode(a)
+}
+
func (me *TreeInfo) makeTable(t *guipb.Table) {
win := makeTableWindow(t.Window)
grid := win.makeWindowGrid(t.Grid)
me.Add(win)
me.Add(grid)
log.Info("tree: makeTable() finished add win & grid")
+ var h int = 0
+ var w int = 0
+ for _, name := range t.Order {
+ // log.Info("got order:", t.Title, name)
+ if me.addTableRow(t, grid, name, w) {
+ log.Info("tree:row() COLUMN GOOD", t.Title, name, w, h)
+ } else {
+ log.Info("tree:row() COLOMN FAIL", t.Title, name, w, h)
+ }
- for i, r := range t.StringRows {
- log.Info("got string row:", t.Title, i, r.Header, r.Vals)
+ w += 1
+ }
+
+ /*
+ for i, r := range t.StringRows {
+ log.Info("got string row:", t.Title, i, r.Header, r.Vals)
+ for _, v := range r.Widgets {
+ log.Info("tree: add to grid here", v.Id, v.Name)
+ lab := grid.makeGridLabel(v, w, h)
+ me.Add(lab)
+ h += 1
+ }
+ }
+ */
+}
+
+func (me *TreeInfo) addTableRow(t *guipb.Table, grid *Node, 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)
+ head := grid.makeGridLabel(r.Header, w, h)
+ me.Add(head)
+ h += 1
for _, v := range r.Widgets {
- log.Info("tree: add to grid here", v.Id, v.Name)
+ log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h)
+ lab := grid.makeGridLabel(v, w, h)
+ me.Add(lab)
+ 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)
+ head := grid.makeGridLabel(r.Header, w, h)
+ me.Add(head)
+ h += 1
+ for _, v := range r.Widgets {
+ v.Name = fmt.Sprintf("%d", v.Size)
+ log.Info("tree: Add()ing to grid here", v.Id, v.Name, w, h)
+ lab := grid.makeGridLabel(v, w, h)
+ me.Add(lab)
+ h += 1
+ }
+ return true
+ }
+
+ return false
}
func dumpTable(t *guipb.Table) {
@@ -79,13 +153,13 @@ func dumpTable(t *guipb.Table) {
log.Info("got order:", t.Title, i, o)
}
for i, r := range t.StringRows {
- log.Info("got string row:", t.Title, i, r.Header, r.Vals)
+ 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.IntRows {
- log.Info("got int row:", t.Title, i, r.Header, r.Vals)
+ 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.Size)
}