ok but now server side make template ez

main
bel 2024-04-13 21:26:17 -06:00
parent e33d1a6a4b
commit f4b04e01d3
2 changed files with 72 additions and 8 deletions

View File

@ -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
}

View File

@ -49,13 +49,48 @@
</rows>
</rows>
<rows>
<div>
<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>
<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>