From 620b03459751a17632f6165b289206dc6d86ed7c Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Fri, 3 Oct 2025 10:42:07 +0200 Subject: feat(backend): handle display all log --- backend/home.go | 60 ++++++++++++++++++----------------------- backend/logs.go | 23 +++++++++++++++- backend/templates/home_log.html | 23 ++++++++++++++++ 3 files changed, 71 insertions(+), 35 deletions(-) create mode 100644 backend/templates/home_log.html (limited to 'backend') diff --git a/backend/home.go b/backend/home.go index d223cf5..d41102c 100644 --- a/backend/home.go +++ b/backend/home.go @@ -2,9 +2,7 @@ package backend import ( "log/slog" - "maps" "net/http" - "slices" "strconv" "github.com/go-chi/chi/v5" @@ -27,43 +25,37 @@ func (h *homeData) SetData(d *data) { func HandleHome(r *chi.Mux) { r.Get("/", func(w http.ResponseWriter, r *http.Request) { - rawPage := r.URL.Query().Get("page") - page := 1 - if rawPage != "" { - var err error - page, err = strconv.Atoi(rawPage) - if err != nil || page < 1 { - slog.Warn("invalid page number", "rawPage", rawPage) - w.WriteHeader(http.StatusBadRequest) - return - } - } - d := new(homeData) - d.data = new(data) - if sortedLogs == nil { - sortLogs() - } - d.CurrentPage = page - d.PagesNumber = len(sortedLogs)/maxLogsPerPage + 1 - if d.PagesNumber < page { - http.NotFoundHandler().ServeHTTP(w, r) + d := handleGenericLogsDisplay(w, r) + if d == nil { return } - d.Logs = sortedLogs[(page-1)*maxLogsPerPage : min(page*maxLogsPerPage, len(sortedLogs))] d.handleGeneric(w, r, "home", d) }) } -func sortLogs() { - sortedLogs = slices.SortedFunc(maps.Values(logs), func(l *logData, l2 *logData) int { - lt := l.ModAt - l2t := l2.ModAt - // we want it reversed - if lt.Before(l2t) { - return 1 - } else if lt.After(l2t) { - return -1 +func handleGenericLogsDisplay(w http.ResponseWriter, r *http.Request) *homeData { + rawPage := r.URL.Query().Get("page") + page := 1 + if rawPage != "" { + var err error + page, err = strconv.Atoi(rawPage) + if err != nil || page < 1 { + slog.Warn("invalid page number", "rawPage", rawPage) + w.WriteHeader(http.StatusBadRequest) + return nil } - return 0 - }) + } + d := new(homeData) + d.data = new(data) + if sortedLogs == nil { + sortLogs() + } + d.CurrentPage = page + d.PagesNumber = len(sortedLogs)/maxLogsPerPage + 1 + if d.PagesNumber < page { + http.NotFoundHandler().ServeHTTP(w, r) + return nil + } + d.Logs = sortedLogs[(page-1)*maxLogsPerPage : min(page*maxLogsPerPage, len(sortedLogs))] + return d } diff --git a/backend/logs.go b/backend/logs.go index 50caec1..8b6a608 100644 --- a/backend/logs.go +++ b/backend/logs.go @@ -6,9 +6,11 @@ import ( "html/template" "io/fs" "log/slog" + "maps" "net/http" "os" "path/filepath" + "slices" "strings" "sync" "time" @@ -112,6 +114,7 @@ func readLogDir(path string, dir []os.DirEntry) error { } } wg.Wait() + sortLogs() return nil } @@ -123,7 +126,11 @@ func HandleLogs(r *chi.Mux) { } func handleLogList(w http.ResponseWriter, r *http.Request) { - + d := handleGenericLogsDisplay(w, r) + if d == nil { + return + } + d.handleGeneric(w, r, "home_log", d) } func handleLog(w http.ResponseWriter, r *http.Request) { @@ -187,3 +194,17 @@ func parseLog(d *logData, path, slug string, fi fs.FileInfo) bool { logs[path] = d return true } + +func sortLogs() { + sortedLogs = slices.SortedFunc(maps.Values(logs), func(l *logData, l2 *logData) int { + lt := l.ModAt + l2t := l2.ModAt + // we want it reversed + if lt.Before(l2t) { + return 1 + } else if lt.After(l2t) { + return -1 + } + return 0 + }) +} diff --git a/backend/templates/home_log.html b/backend/templates/home_log.html new file mode 100644 index 0000000..dd5fdc1 --- /dev/null +++ b/backend/templates/home_log.html @@ -0,0 +1,23 @@ +{{define "body"}} +
+ {{ range .Logs }} + + {{ end }} + {{ if ne .PagesNumber 1 }} + + {{ end }} +
+{{end}} -- cgit v1.2.3