mirror of
https://github.com/Theodor-Springmann-Stiftung/lenz-web.git
synced 2025-10-28 16:55:32 +00:00
Grupperiung seiten
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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: "1756–1770", Start: 1756, End: 1770, Letters: []xmlmodels.Meta{}},
|
||||
{Label: "1771–1775", Start: 1771, End: 1775, Letters: []xmlmodels.Meta{}},
|
||||
{Label: "1776", Start: 1776, End: 1776, Letters: []xmlmodels.Meta{}},
|
||||
{Label: "1777–1779", Start: 1777, End: 1779, Letters: []xmlmodels.Meta{}},
|
||||
{Label: "1780–1792", 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",
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user