]> saetta.ns0.it Git - zakgrid_go/commitdiff
Added customizable table header template.
authorAndrea Zagli <azagli@libero.it>
Sun, 22 Aug 2021 08:19:26 +0000 (10:19 +0200)
committerAndrea Zagli <azagli@libero.it>
Sun, 22 Aug 2021 08:19:26 +0000 (10:19 +0200)
main.go

diff --git a/main.go b/main.go
index 0b4c734ba24da59e70f74dada634da85b2d8be53..9e684a0b45f8544d40c6c1b2951e10c128701687 100644 (file)
--- a/main.go
+++ b/main.go
@@ -3,6 +3,9 @@ package main
 import (
        "fmt"
        "log"
+       "bytes"
+       "text/template"
+
        "database/sql"
        _ "github.com/mattn/go-sqlite3"
 )
@@ -16,8 +19,11 @@ type column struct {
        toCall missingCol
 }
 
+var headerTmpl = "<tr>\n{{ . }}</tr>\n"
+
 type grid struct {
        cols []column
+       headerTmpl string
 }
 
 func (g *grid) addColumn (c column) {
@@ -25,16 +31,32 @@ func (g *grid) addColumn (c column) {
 }
 
 func (g *grid) getHeader () string {
-       header := "<tr>\n"
+       tmpl := g.headerTmpl
+       if tmpl == "" {
+               tmpl = headerTmpl
+       }
+
+       t, err := template.New("header").Parse(tmpl)
+       if err != nil {
+               fmt.Println(err)
+               return ""
+       }
+
+       header := ""
 
        for i, v := range g.cols {
                header += fmt.Sprintf("\t<th>%s</th>\n", v.title)
                fmt.Println(i, v)
        }
 
-       header += "</tr>\n"
+       var b bytes.Buffer
+       err = t.Execute(&b, header)
+       if err != nil {
+               fmt.Println(err)
+               return ""
+       }
 
-       return header
+       return b.String()
 }
 
 func (g *grid) getRowFromMap (m map[string]interface{}) string {
@@ -72,6 +94,8 @@ func missing (row map[string]interface{}) interface{} {
 func main() {
        var g grid
 
+       g.headerTmpl = "<thead><tr>\n{{ . }}</tr></thead>\n"
+
        c := column{name: "id", title: "ID"}
        g.addColumn(c)