...
1 package main
2
3 import (
4 "bytes"
5
6 "golang.conradwood.net/go-easyops/utils"
7 "html/template"
8 "os"
9 )
10
11 const (
12 h_template = `<html>
13 <head>
14 <style>
15 .mytable {
16 border: 1px;
17 outline: 1px solid #CCCCCC;
18 }
19 tr.desc {
20 background-color: #F0F0F0;
21 border-style: solid;
22 border-colour: #000000;
23 border-bottom: 1pt solid black;
24 margin-top: 5px;
25 }
26 tr.details {
27 background-color: #F0F0F0;
28 border-style: solid;
29 border-colour: #000000;
30 border-bottom: 1pt solid black;
31 margin-top: 5px;
32 display:solid;
33 }
34 tr.invisible {
35 display:none;
36 }
37 </style>
38
39 <script>
40 function togglevis(id) {
41 let tgt="details_"+id;
42 console.log("toggling ",tgt)
43 if (document.getElementById("chk_"+id).checked) {
44 document.getElementById(tgt).className="details";
45 } else {
46 document.getElementById(tgt).className="invisible";
47 }
48
49 }
50 </script>
51 </head>
52 <body>
53 <table class="mytable">
54 <tr class="desc">
55 <td>ID</td>
56 <td>Name</td>
57 <td>DC</td>
58 <td>Builder</td>
59 <td>Error</td>
60 </tr>
61 {{ range .Tests }}
62 <tr class="desc">
63 <td><input type="checkbox" id="chk_{{.ID}}" onclick="togglevis({{.ID}})">{{ .ID }}</td>
64 <td> {{ .Name }} </td>
65 <td> {{ .DCStart }} / {{ .DCError }} </td>
66 <td> {{ .BuilderStart }} / {{ .BuilderError }} </td>
67 <td> {{ .GetError }} </td>
68 </tr>
69 <tr id="details_{{.ID}}" class="invisible">
70 <td colspan="5"> {{ .HtmlErrorDetails }}</td>
71 </tr>
72 {{ end }}
73 </table>
74 </body></html>
75 `
76 )
77
78 var (
79 html_template *template.Template
80 )
81
82 func init() {
83 tpl := template.New("foo")
84 p, err := tpl.Parse(h_template)
85 utils.Bail("failed to parse", err)
86 html_template = p
87 }
88
89 type htmlrender struct {
90 Tests []*test
91 }
92
93 func render_tests_to_html(tests []*test) ([]byte, error) {
94 hr := &htmlrender{Tests: tests}
95 buf := &bytes.Buffer{}
96 err := html_template.Execute(buf, hr)
97 if err != nil {
98 return nil, err
99 }
100 return buf.Bytes(), nil
101 }
102 func testrenderer_rendertest() {
103 ts := []*test{
104 NewTest("foo1"),
105 }
106 t := NewTest("foo2")
107 t.id = 10
108 t.stdout_buf = &bytes.Buffer{}
109 t.stdout_buf.Write([]byte(`there is some stuff to see here
110 but not too much
111 `))
112 ts = append(ts, t)
113 for _, t := range ts {
114 t.Done()
115 }
116 PrintResult()
117 os.Exit(0)
118 }
119
View as plain text