more work on 'any' in GUI PB

This commit is contained in:
Jeff Carr 2025-09-15 04:52:59 -05:00
parent 66aacceee5
commit cea3028333
2 changed files with 56 additions and 13 deletions

View File

@ -193,15 +193,20 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " return sf") fmt.Fprintln(w, " return sf")
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddTimeFunc(title string, f func(*"+FRUIT+") time.Time) *"+FRUIT+"TimeFunc {") fmt.Fprintln(w, "func (t *"+FRUITS+"Table) AddTimeFunc(title string, f func(*"+FRUIT+") any) *"+FRUIT+"AnyFunc {")
fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, title)") fmt.Fprintln(w, " t.pb.Order = append(t.pb.Order, title)")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, " sf := new("+FRUIT+"TimeFunc)") fmt.Fprintln(w, " sf := new("+FRUIT+"AnyFunc)")
fmt.Fprintln(w, " sf.title = title") fmt.Fprintln(w, " sf.title = title")
fmt.Fprintln(w, " sf.f = f") fmt.Fprintln(w, " sf.f = f")
fmt.Fprintln(w, " sf.order = t.order") fmt.Fprintln(w, " sf.order = t.order")
fmt.Fprintln(w, " sf.attr = new(guipb.ColAttr)")
fmt.Fprintln(w, " sf.attr.Width = int32(sf.Width)")
fmt.Fprintln(w, " sf.attr.Type = guipb.ColAttr_TIME")
fmt.Fprintln(w, "")
fmt.Fprintln(w, " t.order += 1") fmt.Fprintln(w, " t.order += 1")
fmt.Fprintln(w, " t.timeFuncs = append(t.timeFuncs, sf)") fmt.Fprintln(w, " // t.timeFuncs = append(t.timeFuncs, sf)")
fmt.Fprintln(w, " t.anyFuncs = append(t.anyFuncs, sf)")
fmt.Fprintln(w, " return sf") fmt.Fprintln(w, " return sf")
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
@ -264,11 +269,12 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) {
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, "type "+FRUIT+"AnyFunc struct {") fmt.Fprintln(w, "type "+FRUIT+"AnyFunc struct {")
fmt.Fprintln(w, " title string") fmt.Fprintln(w, " title string")
fmt.Fprintln(w, " f func(*"+FRUIT+") any") fmt.Fprintln(w, " f func(*"+FRUIT+") any")
fmt.Fprintln(w, " Custom func(*"+FRUIT+")") fmt.Fprintln(w, " Custom func(*"+FRUIT+")")
fmt.Fprintln(w, " order int") fmt.Fprintln(w, " order int")
fmt.Fprintln(w, " Width int") fmt.Fprintln(w, " Width int")
fmt.Fprintln(w, " attr *guipb.ColAttr")
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, "type "+FRUITS+"Table struct {") fmt.Fprintln(w, "type "+FRUITS+"Table struct {")
@ -279,7 +285,7 @@ func guiMain(w io.Writer, FRUITS string, FRUIT string) {
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, " stringFuncs []*"+FRUIT+"StringFunc") fmt.Fprintln(w, " stringFuncs []*"+FRUIT+"StringFunc")
fmt.Fprintln(w, " intFuncs []*"+FRUIT+"IntFunc") fmt.Fprintln(w, " intFuncs []*"+FRUIT+"IntFunc")
fmt.Fprintln(w, " timeFuncs []*"+FRUIT+"TimeFunc") fmt.Fprintln(w, " // timeFuncs []*"+FRUIT+"TimeFunc")
fmt.Fprintln(w, " buttonFuncs []*"+FRUIT+"ButtonFunc") fmt.Fprintln(w, " buttonFuncs []*"+FRUIT+"ButtonFunc")
fmt.Fprintln(w, " anyFuncs []*"+FRUIT+"AnyFunc") fmt.Fprintln(w, " anyFuncs []*"+FRUIT+"AnyFunc")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
@ -359,6 +365,7 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " return false") fmt.Fprintln(w, " return false")
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, "/*")
fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) doTimeFunc(name string) bool {") fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) doTimeFunc(name string) bool {")
fmt.Fprintln(w, " for _, sf := range mt.timeFuncs {") fmt.Fprintln(w, " for _, sf := range mt.timeFuncs {")
fmt.Fprintln(w, " if sf.title != name {") fmt.Fprintln(w, " if sf.title != name {")
@ -383,6 +390,34 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " return false") fmt.Fprintln(w, " return false")
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
fmt.Fprintln(w, "*/")
fmt.Fprintln(w, "")
fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) doAnyFunc(name string) bool {")
fmt.Fprintln(w, " for _, sf := range mt.anyFuncs {")
fmt.Fprintln(w, " if sf.title != name {")
fmt.Fprintln(w, " continue")
fmt.Fprintln(w, " }")
fmt.Fprintln(w, " r := new(guipb.AnyCol)")
fmt.Fprintln(w, " r.Header = new(guipb.Widget)")
fmt.Fprintln(w, " r.Header.Name = name")
fmt.Fprintln(w, " r.Attr = new(guipb.ColAttr)")
fmt.Fprintln(w, " r.Attr.Width = int32(sf.Width)")
fmt.Fprintln(w, " r.Attr.Type = guipb.ColAttr_TIME")
fmt.Fprintln(w, "")
fmt.Fprintln(w, " for m := range mt.x.IterAll() {")
fmt.Fprintln(w, " t := sf.f(m)")
fmt.Fprintln(w, " var goTime time.Time")
fmt.Fprintln(w, " goTime = t.(time.Time)")
fmt.Fprintln(w, " tsProto := timestamppb.New(goTime)")
fmt.Fprintln(w, " anyProto, err := anypb.New(tsProto)")
fmt.Fprintln(w, " _ = err // do something with err someday (?)")
fmt.Fprintln(w, " r.Vals = append(r.Vals, anyProto)")
fmt.Fprintln(w, " }")
fmt.Fprintln(w, " mt.pb.AnyCols = append(mt.pb.AnyCols, r)")
fmt.Fprintln(w, " return true")
fmt.Fprintln(w, " }")
fmt.Fprintln(w, " return false")
fmt.Fprintln(w, "}")
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) MakeTable() {") fmt.Fprintln(w, "func (mt *"+FRUITS+"Table) MakeTable() {")
fmt.Fprintln(w, " for _, name := range mt.pb.Order {") fmt.Fprintln(w, " for _, name := range mt.pb.Order {")
@ -392,10 +427,13 @@ func guiStringFuncs(w io.Writer, ZOOPB string, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " if mt.doIntFunc(name) {") fmt.Fprintln(w, " if mt.doIntFunc(name) {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " continue")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " if mt.doTimeFunc(name) {") fmt.Fprintln(w, " // if mt.doTimeFunc(name) {")
fmt.Fprintln(w, " // continue")
fmt.Fprintln(w, " // }")
fmt.Fprintln(w, " if mt.doButtonFunc(name) {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " continue")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " if mt.doButtonFunc(name) {") fmt.Fprintln(w, " if mt.doAnyFunc(name) {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " continue")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
@ -445,9 +483,9 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " if mt.updateStringFunc(name) {") fmt.Fprintln(w, " if mt.updateStringFunc(name) {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " continue")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " if mt.updateTimeFunc(name) {") fmt.Fprintln(w, " // if mt.updateTimeFunc(name) {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " // continue")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " // }")
fmt.Fprintln(w, " /*") fmt.Fprintln(w, " /*")
fmt.Fprintln(w, " if mt.updateIntFunc(name) {") fmt.Fprintln(w, " if mt.updateIntFunc(name) {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " continue")
@ -517,6 +555,7 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " log.Info(\"did not find time row\", name)") fmt.Fprintln(w, " log.Info(\"did not find time row\", name)")
fmt.Fprintln(w, " return false") fmt.Fprintln(w, " return false")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " /*")
fmt.Fprintln(w, " for _, sf := range mt.timeFuncs {") fmt.Fprintln(w, " for _, sf := range mt.timeFuncs {")
fmt.Fprintln(w, " if sf.title != name {") fmt.Fprintln(w, " if sf.title != name {")
fmt.Fprintln(w, " continue") fmt.Fprintln(w, " continue")
@ -530,6 +569,7 @@ func guiUpdate(w io.Writer, FRUITS string, FRUIT string) {
fmt.Fprintln(w, " // log.Info(\"virtpb: ending\", name, found.Vals)") fmt.Fprintln(w, " // log.Info(\"virtpb: ending\", name, found.Vals)")
fmt.Fprintln(w, " return true") fmt.Fprintln(w, " return true")
fmt.Fprintln(w, " }") fmt.Fprintln(w, " }")
fmt.Fprintln(w, " */")
fmt.Fprintln(w, " return false") fmt.Fprintln(w, " return false")
fmt.Fprintln(w, "}") fmt.Fprintln(w, "}")
} }

View File

@ -214,6 +214,9 @@ func main() {
badExit(err) badExit(err)
} }
} }
log.Info("")
log.Info("you may have to run 'goimport -w *.go' on the new *pb.go files")
log.Info("")
} }
func okExit(s string) { func okExit(s string) {