added share list page
This commit is contained in:
59
web/sharesHandler.go
Normal file
59
web/sharesHandler.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package web
|
||||
|
||||
import (
|
||||
"html/template"
|
||||
"net/http"
|
||||
"pool-stats/database"
|
||||
"pool-stats/helpers"
|
||||
"pool-stats/models"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type SharePageData struct {
|
||||
Shares []models.ShareLog
|
||||
Page int
|
||||
HasMore bool
|
||||
}
|
||||
|
||||
func (ws *WebServer) SharesHandler(w http.ResponseWriter, r *http.Request) {
|
||||
tmpl := template.New("share_list").Funcs(template.FuncMap{
|
||||
"add": func(a, b int) int { return a + b },
|
||||
"sub": func(a, b int) int { return a - b },
|
||||
"humanDiff": helpers.HumanDiff,
|
||||
"formatCreateDate": helpers.FormatCreateDate,
|
||||
})
|
||||
tmpl, err := tmpl.ParseFiles("templates/shares.html")
|
||||
if err != nil {
|
||||
http.Error(w, "Failed to load template", 500)
|
||||
return
|
||||
}
|
||||
|
||||
entriesPerPage := 10
|
||||
page := r.URL.Query().Get("page")
|
||||
if page == "" {
|
||||
page = "1"
|
||||
}
|
||||
|
||||
offset, err := strconv.Atoi(page)
|
||||
if err != nil || offset < 1 {
|
||||
http.Error(w, "Invalid page number", 400)
|
||||
return
|
||||
}
|
||||
|
||||
offset = (offset - 1) * entriesPerPage
|
||||
shareLogs := database.ListShares(ws.db, offset, entriesPerPage)
|
||||
if shareLogs == nil {
|
||||
http.Error(w, "Failed to load shares", 500)
|
||||
return
|
||||
}
|
||||
|
||||
data := SharePageData{
|
||||
Shares: shareLogs,
|
||||
Page: offset/entriesPerPage + 1,
|
||||
HasMore: len(shareLogs) == entriesPerPage,
|
||||
}
|
||||
if err := tmpl.Execute(w, data); err != nil {
|
||||
http.Error(w, "Failed to render template", 500)
|
||||
return
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user