ok but now server side make template ez
parent
e33d1a6a4b
commit
f4b04e01d3
31
report.go
31
report.go
|
|
@ -3,6 +3,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
"errors"
|
||||||
"io"
|
"io"
|
||||||
"text/template"
|
"text/template"
|
||||||
"time"
|
"time"
|
||||||
|
|
@ -12,7 +13,35 @@ import (
|
||||||
var reportTMPL string
|
var reportTMPL string
|
||||||
|
|
||||||
func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error {
|
func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error {
|
||||||
tmpl, err := template.New("report").Parse(reportTMPL)
|
tmpl := template.New("report").Funcs(map[string]any{
|
||||||
|
"time": func(foo string, args ...any) (any, error) {
|
||||||
|
switch foo {
|
||||||
|
case "Unix":
|
||||||
|
seconds, _ := args[0].(uint64)
|
||||||
|
return time.Unix(int64(seconds), 0), nil
|
||||||
|
case "Time.Format":
|
||||||
|
t, _ := args[1].(time.Time)
|
||||||
|
return t.Format(args[0].(string)), nil
|
||||||
|
}
|
||||||
|
return nil, errors.New("not impl")
|
||||||
|
},
|
||||||
|
"null": func() any {
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
"append": func(arr any, v any) (any, error) {
|
||||||
|
if v == nil {
|
||||||
|
return arr, nil
|
||||||
|
}
|
||||||
|
switch arr := arr.(type) {
|
||||||
|
case []any:
|
||||||
|
return append(arr, v), nil
|
||||||
|
case nil:
|
||||||
|
return []any{v}, nil
|
||||||
|
}
|
||||||
|
return nil, errors.New("unknown type in append")
|
||||||
|
},
|
||||||
|
})
|
||||||
|
tmpl, err := tmpl.Parse(reportTMPL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
49
report.tmpl
49
report.tmpl
|
|
@ -49,13 +49,48 @@
|
||||||
</rows>
|
</rows>
|
||||||
</rows>
|
</rows>
|
||||||
<rows>
|
<rows>
|
||||||
<h2>Events</h2>
|
<div>
|
||||||
<table>
|
<h2>Events</h2>
|
||||||
<tr><th>event</th></tr>
|
<table>
|
||||||
<tr><td>LIST ME</td></tr>
|
<tr>
|
||||||
<tr><td>LIST ME</td></tr>
|
<th>TS</th>
|
||||||
<tr><td>LIST ME</td></tr>
|
<th>Event</th>
|
||||||
</table>
|
<th>EventName</th>
|
||||||
|
<th>LastPlaintext</th>
|
||||||
|
<th>Source</th>
|
||||||
|
</tr>
|
||||||
|
{{ $messages := .messages }}
|
||||||
|
{{ range .events }}
|
||||||
|
{{ $event := . }}
|
||||||
|
{{ $event_messages := null }}
|
||||||
|
{{ $event_message := null }}
|
||||||
|
{{ range $messages }}
|
||||||
|
{{ if eq .Event $event }}
|
||||||
|
{{ $event_message = . }}
|
||||||
|
{{ $event_messages = append $event_messages . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
<div>
|
||||||
|
<br>messages={{ $messages }}
|
||||||
|
<br>event ={{ $event }}
|
||||||
|
<br>event_messages ={{ $event_messages }}
|
||||||
|
</div>
|
||||||
|
<tr>
|
||||||
|
<td>{{ time "Unix" $event_message.TS | time "Time.Format" "Mon Jan 2" }}</td>
|
||||||
|
<td><a href="https://TODO">{{ $event_message.Event }}</a></td>
|
||||||
|
<td>{{ $event_message.EventName }}</td>
|
||||||
|
<td>
|
||||||
|
{{ $last_message := null }}
|
||||||
|
{{ range $event_messages }}
|
||||||
|
{{ $last_message = . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $last_message.Plaintext }}
|
||||||
|
</td>
|
||||||
|
<td><a href="{{ $event_message.Source }}">link</a></td>
|
||||||
|
</tr>
|
||||||
|
{{ end }}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</rows>
|
</rows>
|
||||||
</rows>
|
</rows>
|
||||||
</columns>
|
</columns>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue