diff --git a/report.go b/report.go index 861d4bb..a53f5d4 100644 --- a/report.go +++ b/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 } diff --git a/report.tmpl b/report.tmpl index a01ad0d..8e43283 100644 --- a/report.tmpl +++ b/report.tmpl @@ -49,13 +49,48 @@ -

Events

- - - - - -
event
LIST ME
LIST ME
LIST ME
+
+

Events

+ + + + + + + + + {{ $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 }} +
+
messages={{ $messages }} +
event ={{ $event }} +
event_messages ={{ $event_messages }} +
+ + + + + + + + {{ end }} +
TSEventEventNameLastPlaintextSource
{{ time "Unix" $event_message.TS | time "Time.Format" "Mon Jan 2" }}{{ $event_message.Event }}{{ $event_message.EventName }} + {{ $last_message := null }} + {{ range $event_messages }} + {{ $last_message = . }} + {{ end }} + {{ $last_message.Plaintext }} + link
+