Grupperiung seiten

This commit is contained in:
Simon Martens
2025-09-17 11:53:43 +02:00
parent 9bfebe5828
commit 96a87ad7b6
6 changed files with 92 additions and 34 deletions

View File

@@ -1,12 +1,19 @@
package controllers
import (
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels"
"github.com/gofiber/fiber/v2"
"strconv"
)
const DEFAULT_YEAR = 1765
func GetIndex(c *fiber.Ctx) error {
return c.Redirect(LETTERS_URL + "?year=" + strconv.Itoa(DEFAULT_YEAR))
type DateRange struct {
Label string
Start int
End int
Letters []xmlmodels.Meta
}
func GetIndex(c *fiber.Ctx) error {
return c.Redirect(LETTERS_URL + "?range=all")
}

View File

@@ -1,23 +1,48 @@
package controllers
import (
"strconv"
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels"
"github.com/gofiber/fiber/v2"
)
func GetLetters(c *fiber.Ctx) error {
lib := xmlmodels.Get()
years, yearmap := lib.Years()
y := c.Query(YEAR_PARAM, strconv.Itoa(DEFAULT_YEAR))
_, yearmap := lib.Years()
rangeParam := c.Query("range", "")
// TODO: does not work ATM
c.Locals("path", c.Path())
year, err := strconv.Atoi(y)
if _, ok := yearmap[year]; (err != nil || !ok) && y != "all" {
return c.SendStatus(fiber.StatusNotFound)
// Define the date ranges
ranges := []DateRange{
{Label: "17561770", Start: 1756, End: 1770, Letters: []xmlmodels.Meta{}},
{Label: "17711775", Start: 1771, End: 1775, Letters: []xmlmodels.Meta{}},
{Label: "1776", Start: 1776, End: 1776, Letters: []xmlmodels.Meta{}},
{Label: "17771779", Start: 1777, End: 1779, Letters: []xmlmodels.Meta{}},
{Label: "17801792", Start: 1780, End: 1792, Letters: []xmlmodels.Meta{}},
}
return c.Render(LETTERS_URL+"/", fiber.Map{"years": years, "yearmap": yearmap, "year": year, "all": y == "all"})
// Group letters by date ranges
for year, letters := range yearmap {
for i := range ranges {
if year >= ranges[i].Start && year <= ranges[i].End {
ranges[i].Letters = append(ranges[i].Letters, letters...)
break
}
}
}
// Handle specific range selection
selectedRange := -1
for i, r := range ranges {
if r.Label == rangeParam {
selectedRange = i
break
}
}
return c.Render(LETTERS_URL+"/", fiber.Map{
"ranges": ranges,
"selectedRange": selectedRange,
"all": rangeParam == "all",
})
}