ok template input a lot more verbose
parent
f4b04e01d3
commit
8a67f505ce
74
report.go
74
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
|
||||
|
|
@ -68,9 +65,74 @@ 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"),
|
||||
"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,
|
||||
"events": events,
|
||||
"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,
|
||||
"eventNames": eventNames,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
32
report.tmpl
32
report.tmpl
|
|
@ -59,34 +59,16 @@
|
|||
<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 . }}
|
||||
{{ $first_ts := 0 }}
|
||||
{{ $event := "" }}
|
||||
{{ $event_name := "" }}
|
||||
{{ $last_plaintext := "" }}
|
||||
{{ $source := "" }}
|
||||
{{ range . }}
|
||||
{{ 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>
|
||||
<td>{{ time "Unix" $first_ts | time "Time.Format" "Mon Jan 02" }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</table>
|
||||
|
|
|
|||
Loading…
Reference in New Issue