package adminview import ( "git.haelnorr.com/h/oslstats/internal/db" "fmt" "time" ) templ AuditLogsList(logs *db.List[db.AuditLog], users []*db.User, actions []string, resourceTypes []string) {

Audit Logs

@AuditLogsResults(logs)
} templ AuditLogsResults(logs *db.List[db.AuditLog]) { if len(logs.Items) == 0 {

No audit logs found

} else {
for _, log := range logs.Items { }
Timestamp User Action Resource Resource ID Result Actions
{ formatFullTimestamp(log.CreatedAt) } if log.User != nil { { log.User.Username } } else { Unknown } { log.Action } { log.ResourceType } if log.ResourceID != nil { { *log.ResourceID } } else { } @resultBadge(log.Result)
{{ totalPages := (logs.Total + logs.PageOpts.PerPage - 1) / logs.PageOpts.PerPage if logs.PageOpts.PerPage == 0 { totalPages = 1 } }} if totalPages > 1 {
if logs.PageOpts.Page > 1 { } Page { fmt.Sprintf("%d", logs.PageOpts.Page) } of { fmt.Sprintf("%d", totalPages) } if logs.PageOpts.Page < totalPages { }
} } } templ resultBadge(result string) { {{ var classes string switch result { case "success": classes = "px-2 py-0.5 bg-green/20 text-green rounded text-xs font-medium" case "denied": classes = "px-2 py-0.5 bg-yellow/20 text-yellow rounded text-xs font-medium" case "error": classes = "px-2 py-0.5 bg-red/20 text-red rounded text-xs font-medium" default: classes = "px-2 py-0.5 bg-surface1 text-subtext0 rounded text-xs font-medium" } }} { result } } func formatFullTimestamp(unixTime int64) string { t := time.Unix(unixTime, 0) return t.Format("Jan 2, 2006 15:04:05") }