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 (
|
||||
"context"
|
||||
_ "embed"
|
||||
"errors"
|
||||
"io"
|
||||
"text/template"
|
||||
"time"
|
||||
|
|
@ -12,7 +13,35 @@ import (
|
|||
var reportTMPL string
|
||||
|
||||
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 {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
49
report.tmpl
49
report.tmpl
|
|
@ -49,13 +49,48 @@
|
|||
</rows>
|
||||
</rows>
|
||||
<rows>
|
||||
<h2>Events</h2>
|
||||
<table>
|
||||
<tr><th>event</th></tr>
|
||||
<tr><td>LIST ME</td></tr>
|
||||
<tr><td>LIST ME</td></tr>
|
||||
<tr><td>LIST ME</td></tr>
|
||||
</table>
|
||||
<div>
|
||||
<h2>Events</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>TS</th>
|
||||
<th>Event</th>
|
||||
<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>
|
||||
</columns>
|
||||
|
|
|
|||
Loading…
Reference in New Issue