Files
kgpz_web/providers/year.go
2024-11-16 02:30:20 +01:00

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)
}