mirror of
https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
synced 2025-10-28 16:45:32 +00:00
85 lines
1.7 KiB
Go
85 lines
1.7 KiB
Go
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)
|
|
}
|