mirror of
https://github.com/Theodor-Springmann-Stiftung/lenz-web.git
synced 2025-10-28 16:55:32 +00:00
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package controllers
|
||
|
||
import (
|
||
"github.com/Theodor-Springmann-Stiftung/lenz-web/xmlmodels"
|
||
"github.com/gofiber/fiber/v2"
|
||
)
|
||
|
||
func GetLetters(c *fiber.Ctx) error {
|
||
lib := xmlmodels.Get()
|
||
_, yearmap := lib.Years()
|
||
rangeParam := c.Query("range", "")
|
||
// TODO: does not work ATM
|
||
c.Locals("path", c.Path())
|
||
|
||
// 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{}},
|
||
}
|
||
|
||
// 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",
|
||
})
|
||
}
|