mirror of
https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
synced 2025-10-29 09:05:30 +00:00
index endpoint start
This commit is contained in:
@@ -11,7 +11,31 @@ type IssueProvider struct {
|
||||
|
||||
type Issues struct {
|
||||
XMLName xml.Name `xml:"stuecke"`
|
||||
Issue []Issue `xml:"stueck"`
|
||||
Issues []Issue `xml:"stueck"`
|
||||
}
|
||||
|
||||
func (i *IssueProvider) GetYear(year string) YearViewModel {
|
||||
res := YearViewModel{Year: year}
|
||||
last := ""
|
||||
for _, issue := range i.Items.Issues {
|
||||
if len(issue.Datum.When) < 4 {
|
||||
continue
|
||||
}
|
||||
|
||||
date := issue.Datum.When[0:4]
|
||||
if date != last {
|
||||
res.PushAvailable(date)
|
||||
last = date
|
||||
}
|
||||
|
||||
if date == year {
|
||||
res.PushIssue(issue)
|
||||
}
|
||||
}
|
||||
|
||||
res.SortAvailableYears()
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
type Issue struct {
|
||||
@@ -39,13 +63,13 @@ type Additional struct {
|
||||
}
|
||||
|
||||
func (i Issues) Append(data Issues) Issues {
|
||||
i.Issue = append(i.Issue, data.Issue...)
|
||||
i.Issues = append(i.Issues, data.Issues...)
|
||||
return i
|
||||
}
|
||||
|
||||
func (i Issues) String() string {
|
||||
var res []string
|
||||
for _, issue := range i.Issue {
|
||||
for _, issue := range i.Issues {
|
||||
res = append(res, issue.String())
|
||||
}
|
||||
|
||||
|
||||
@@ -81,5 +81,5 @@ type Reference struct {
|
||||
}
|
||||
|
||||
type Value struct {
|
||||
Value string `xml:",chardata"`
|
||||
Chardata string `xml:",chardata"`
|
||||
}
|
||||
|
||||
84
providers/year.go
Normal file
84
providers/year.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package providers
|
||||
|
||||
import (
|
||||
"slices"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
const TLAYOUT = "2006-01-02"
|
||||
|
||||
var TRANSLM = map[string][]string{
|
||||
"January": {"Januar", "Jan"},
|
||||
"February": {"Februar", "Feb"},
|
||||
"March": {"März", "Mär"},
|
||||
"April": {"April", "Apr"},
|
||||
"May": {"Mai", "Mai"},
|
||||
"June": {"Juni", "Jun"},
|
||||
"July": {"Juli", "Jul"},
|
||||
"August": {"August", "Aug"},
|
||||
"September": {"September", "Sep"},
|
||||
"October": {"Oktober", "Okt"},
|
||||
"November": {"November", "Nov"},
|
||||
"December": {"Dezember", "Dez"},
|
||||
}
|
||||
|
||||
var TRANSLD = map[string][]string{
|
||||
"Monday": {"Montag", "Mo"},
|
||||
"Tuesday": {"Dienstag", "Di"},
|
||||
"Wednesday": {"Mittwoch", "Mi"},
|
||||
"Thursday": {"Donnerstag", "Do"},
|
||||
"Friday": {"Freitag", "Fr"},
|
||||
"Saturday": {"Samstag", "Sa"},
|
||||
"Sunday": {"Sonntag", "So"},
|
||||
}
|
||||
|
||||
type IssueViewModel struct {
|
||||
Issue
|
||||
Weekday []string
|
||||
Day int
|
||||
Month []string
|
||||
}
|
||||
|
||||
func NewIssueView(i Issue) (IssueViewModel, error) {
|
||||
t, err := time.Parse(TLAYOUT, i.Datum.When)
|
||||
if err != nil {
|
||||
return IssueViewModel{}, err
|
||||
}
|
||||
|
||||
return IssueViewModel{
|
||||
Issue: i,
|
||||
Weekday: append(TRANSLD[t.Weekday().String()], t.Weekday().String()),
|
||||
Day: t.Day(),
|
||||
Month: append(TRANSLM[t.Month().String()], i.Datum.When[5:7]),
|
||||
}, nil
|
||||
}
|
||||
|
||||
type YearViewModel struct {
|
||||
Year string
|
||||
AvailableYears []int
|
||||
Issues []IssueViewModel
|
||||
}
|
||||
|
||||
func (y *YearViewModel) PushIssue(i Issue) {
|
||||
iv, err := NewIssueView(i)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
y.Issues = append(y.Issues, iv)
|
||||
}
|
||||
|
||||
func (y *YearViewModel) PushAvailable(s string) {
|
||||
i, err := strconv.Atoi(s)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if !slices.Contains(y.AvailableYears, i) {
|
||||
y.AvailableYears = append(y.AvailableYears, i)
|
||||
}
|
||||
}
|
||||
|
||||
func (y *YearViewModel) SortAvailableYears() {
|
||||
slices.Sort(y.AvailableYears)
|
||||
}
|
||||
Reference in New Issue
Block a user