From 8a67f505ceeaed61a7c07c7f505bec488f9f8e7c Mon Sep 17 00:00:00 2001 From: bel Date: Sat, 13 Apr 2024 22:50:38 -0600 Subject: [PATCH] ok template input a lot more verbose --- report.go | 78 +++++++++++++++++++++++++++++++++++++++++++++++------ report.tmpl | 32 +++++----------------- 2 files changed, 77 insertions(+), 33 deletions(-) diff --git a/report.go b/report.go index a53f5d4..3242a39 100644 --- a/report.go +++ b/report.go @@ -5,6 +5,8 @@ import ( _ "embed" "errors" "io" + "slices" + "sort" "text/template" "time" ) @@ -51,11 +53,6 @@ func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error return err } - threads, err := s.ThreadsSince(ctx, t) - if err != nil { - return err - } - eventNames, err := s.EventNamesSince(ctx, t) if err != nil { return err @@ -67,10 +64,75 @@ func ReportSince(ctx context.Context, w io.Writer, s Storage, t time.Time) error } return tmpl.Execute(w, map[string]any{ - "since": t.Format("2006-01-02"), + "since": t.Format("2006-01-02"), + "events": func() any { + threads := make([]any, len(events)) + for i, event := range events { + threads[i] = func() any { + threadNames := []string{} + for _, m := range messages { + if m.Event == event { + threadNames = append(threadNames, m.Thread) + } + } + slices.Sort(threadNames) + slices.Compact(threadNames) + threads := make([]any, len(threadNames)) + for i, thread := range threadNames { + threads[i] = func() any { + messages := []Message{} + for _, m := range messages { + if m.Thread == thread { + messages = append(messages, m) + } + } + sort.Slice(messages, func(i, j int) bool { + return messages[i].TS < messages[j].TS + }) + return map[string]any{ + "thread": thread, + "messages": messages, + "first": func() any { + if len(messages) == 0 { + return Message{} + } + return messages[0] + }(), + "last": func() any { + if len(messages) == 0 { + return Message{} + } + return messages[len(messages)-1] + }(), + } + }() + } + sort.Slice(threads, func(i, j int) bool { + return threads[i].(map[string]any)["first"].(Message).TS < threads[j].(map[string]any)["first"].(Message).TS + }) + return map[string]any{ + "event": event, + "threads": threads, + "first": func() any { + if len(threads) == 0 { + return Message{} + } + return threads[0].(map[string]any)["first"] + }(), + "last": func() any { + if len(threads) == 0 { + return Message{} + } + return threads[len(threads)-1].(map[string]any)["last"] + }(), + } + }() + } + return map[string]any{ + "threads": threads, + } + }(), "messages": messages, - "threads": threads, - "events": events, "eventNames": eventNames, }) } diff --git a/report.tmpl b/report.tmpl index 8e43283..86eda3c 100644 --- a/report.tmpl +++ b/report.tmpl @@ -59,34 +59,16 @@ LastPlaintext Source - {{ $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 }} + {{ $first_ts := 0 }} + {{ $event := "" }} + {{ $event_name := "" }} + {{ $last_plaintext := "" }} + {{ $source := "" }} + {{ range . }} {{ end }} -
-
messages={{ $messages }} -
event ={{ $event }} -
event_messages ={{ $event_messages }} -
- {{ 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 + {{ time "Unix" $first_ts | time "Time.Format" "Mon Jan 02" }} {{ end }}