set len(rows)
This commit is contained in:
parent
621ddb1b86
commit
bd897e4edb
|
@ -4,6 +4,7 @@ package cobol
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO: make this more generic
|
// TODO: make this more generic
|
||||||
|
@ -15,33 +16,38 @@ import (
|
||||||
|
|
||||||
// returns the line and the Sprintf fmt string
|
// returns the line and the Sprintf fmt string
|
||||||
func StandardTableRow(sizes []int, args []string) (string, string) {
|
func StandardTableRow(sizes []int, args []string) (string, string) {
|
||||||
var fmtline string
|
var fmts []string
|
||||||
var line string
|
var parts []string
|
||||||
for i, si := range sizes {
|
for i, si := range sizes {
|
||||||
var cell string
|
var cell string
|
||||||
var sfmt string
|
var sfmt string
|
||||||
if si == 0 {
|
if si < 0 {
|
||||||
sfmt = "%-s "
|
sfmt = "%-s"
|
||||||
|
} else if si == 0 {
|
||||||
|
sfmt = "%-8.8s"
|
||||||
} else {
|
} else {
|
||||||
sfmt = "%-" + fmt.Sprintf("%d", si) + "." + fmt.Sprintf("%d", si) + "s "
|
sfmt = "%-" + fmt.Sprintf("%d", si) + "." + fmt.Sprintf("%d", si) + "s "
|
||||||
}
|
}
|
||||||
fmtline += sfmt
|
fmts = append(fmts, sfmt)
|
||||||
if len(args) > i {
|
if len(args) > i {
|
||||||
val := args[i]
|
val := args[i]
|
||||||
cell = fmt.Sprintf(sfmt, val)
|
cell = fmt.Sprintf(sfmt, val)
|
||||||
line += cell
|
parts = append(parts, cell)
|
||||||
} else {
|
} else {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo: change pad based on total size(?)
|
||||||
|
line := strings.Join(parts, " ")
|
||||||
|
|
||||||
var small int
|
var small int
|
||||||
if len(line) > WIDTH {
|
if len(line) > WIDTH {
|
||||||
small = WIDTH
|
small = WIDTH
|
||||||
} else {
|
} else {
|
||||||
small = len(line) - 3
|
small = len(line) - 3
|
||||||
}
|
}
|
||||||
return line[0:small], fmtline
|
return line[0:small], strings.Join(fmts, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
func StandardTableSize5(sizes []int, args []string) string {
|
func StandardTableSize5(sizes []int, args []string) string {
|
||||||
|
|
31
tablePB.go
31
tablePB.go
|
@ -23,23 +23,30 @@ func PrintTable(pb *guipb.Table) {
|
||||||
log.Info("grid.Id =", pb.Grid.Id)
|
log.Info("grid.Id =", pb.Grid.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
if pb.Height < 4 {
|
|
||||||
pb.Height = 4
|
|
||||||
}
|
|
||||||
var h int = 0
|
var h int = 0
|
||||||
var w int = 0
|
var w int = 0
|
||||||
|
var HEIGHT int
|
||||||
|
if pb.Height == 0 {
|
||||||
|
HEIGHT = 4
|
||||||
|
}
|
||||||
|
log.Info("pb.Height", pb.Height, HEIGHT)
|
||||||
var args []string
|
var args []string
|
||||||
var sizes []int
|
var sizes []int
|
||||||
for _, name := range pb.Order {
|
for _, name := range pb.Order {
|
||||||
arg, attr := getColAttr(pb, name)
|
arg, attr, tmp := getColAttr(pb, name)
|
||||||
|
HEIGHT = tmp
|
||||||
args = append(args, arg)
|
args = append(args, arg)
|
||||||
|
if attr.Width == 0 {
|
||||||
|
sizes = append(sizes, 8)
|
||||||
|
} else {
|
||||||
sizes = append(sizes, int(attr.Width))
|
sizes = append(sizes, int(attr.Width))
|
||||||
}
|
}
|
||||||
sizes = []int{24, 5, 8, 32, 13, 4, 4, 4, 4}
|
}
|
||||||
|
// sizes = []int{24, 5, 8, 32, 13, 4, 4, 4, 4}
|
||||||
header, _ := StandardTableRow(sizes, args)
|
header, _ := StandardTableRow(sizes, args)
|
||||||
log.Info(header)
|
log.Info(header)
|
||||||
|
|
||||||
for i := range pb.Height {
|
for i := range HEIGHT {
|
||||||
var cells []string
|
var cells []string
|
||||||
for _, name := range pb.Order {
|
for _, name := range pb.Order {
|
||||||
if val, ok := getTableCell(pb, name, int(i)); ok {
|
if val, ok := getTableCell(pb, name, int(i)); ok {
|
||||||
|
@ -108,34 +115,34 @@ func getTableCell(t *guipb.Table, name string, row int) (string, bool) {
|
||||||
return "", false
|
return "", false
|
||||||
}
|
}
|
||||||
|
|
||||||
func getColAttr(t *guipb.Table, name string) (string, *guipb.ColAttr) {
|
func getColAttr(t *guipb.Table, name string) (string, *guipb.ColAttr, int) {
|
||||||
// find the Column that matches the "name"
|
// find the Column that matches the "name"
|
||||||
for _, r := range t.StringCols {
|
for _, r := range t.StringCols {
|
||||||
if name != r.Header.Name {
|
if name != r.Header.Name {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return r.Header.Name, r.Attr
|
return r.Header.Name, r.Attr, len(r.Vals)
|
||||||
}
|
}
|
||||||
for _, r := range t.ButtonCols {
|
for _, r := range t.ButtonCols {
|
||||||
if name != r.Header.Name {
|
if name != r.Header.Name {
|
||||||
// log.Info("skip string row:", r.Header.Name, "!=", name)
|
// log.Info("skip string row:", r.Header.Name, "!=", name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return r.Header.Name, r.Attr
|
return r.Header.Name, r.Attr, len(r.Vals)
|
||||||
}
|
}
|
||||||
for _, r := range t.IntCols {
|
for _, r := range t.IntCols {
|
||||||
if name != r.Header.Name {
|
if name != r.Header.Name {
|
||||||
// log.Info("skip string row:", r.Header.Name, "!=", name)
|
// log.Info("skip string row:", r.Header.Name, "!=", name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return r.Header.Name, r.Attr
|
return r.Header.Name, r.Attr, len(r.Vals)
|
||||||
}
|
}
|
||||||
for _, r := range t.TimeCols {
|
for _, r := range t.TimeCols {
|
||||||
if name != r.Header.Name {
|
if name != r.Header.Name {
|
||||||
// log.Info("skip sint row:", r.Header.Name, "!=", name)
|
// log.Info("skip sint row:", r.Header.Name, "!=", name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return r.Header.Name, r.Attr
|
return r.Header.Name, r.Attr, len(r.Vals)
|
||||||
}
|
}
|
||||||
return "", nil
|
return "", nil, 0
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue