mirror of
https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
synced 2025-10-28 16:45:32 +00:00
XML parsing overhaul
This commit is contained in:
@@ -2,7 +2,6 @@ package viewmodels
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/Theodor-Springmann-Stiftung/kgpz_web/providers/xmlprovider"
|
||||
@@ -10,56 +9,22 @@ import (
|
||||
|
||||
const TLAYOUT = "2006-01-02"
|
||||
|
||||
var TRANSLM = map[string][]string{
|
||||
"January": {"Januar", "Jan", "1"},
|
||||
"February": {"Februar", "Feb", "2"},
|
||||
"March": {"März", "Mär", "3"},
|
||||
"April": {"April", "Apr", "4"},
|
||||
"May": {"Mai", "Mai", "5"},
|
||||
"June": {"Juni", "Jun", "6"},
|
||||
"July": {"Juli", "Jul", "7"},
|
||||
"August": {"August", "Aug", "8"},
|
||||
"September": {"September", "Sep", "9"},
|
||||
"October": {"Oktober", "Okt", "10"},
|
||||
"November": {"November", "Nov", "11"},
|
||||
"December": {"Dezember", "Dez", "12"},
|
||||
}
|
||||
|
||||
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 {
|
||||
xmlprovider.Issue
|
||||
Weekday []string
|
||||
Day int
|
||||
Month []string
|
||||
Day int
|
||||
Month int
|
||||
Year int
|
||||
}
|
||||
|
||||
func IssueView(y string, No string, lib *xmlprovider.Library) (*IssueViewModel, error) {
|
||||
n, err := strconv.Atoi(No)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
issue := lib.Issues.Item(y + "-" + No)
|
||||
|
||||
if issue == nil {
|
||||
return nil, errors.New("Issue not found")
|
||||
}
|
||||
|
||||
for _, i := range lib.Issues.Items.Issues {
|
||||
if len(i.Datum.When) < 4 {
|
||||
continue
|
||||
}
|
||||
return FromIssue(*issue)
|
||||
|
||||
d := i.Datum.When[:4]
|
||||
if d == y && i.Number.No == n {
|
||||
return FromIssue(i)
|
||||
}
|
||||
}
|
||||
|
||||
return nil, errors.New("Issue not found")
|
||||
}
|
||||
|
||||
func FromIssue(i xmlprovider.Issue) (*IssueViewModel, error) {
|
||||
@@ -69,10 +34,11 @@ func FromIssue(i xmlprovider.Issue) (*IssueViewModel, error) {
|
||||
}
|
||||
|
||||
ivm := IssueViewModel{
|
||||
Issue: i,
|
||||
Weekday: append(TRANSLD[t.Weekday().String()], t.Weekday().String()),
|
||||
Day: t.Day(),
|
||||
Month: TRANSLM[t.Month().String()]}
|
||||
Issue: i,
|
||||
Day: t.Day(),
|
||||
Month: int(t.Month()),
|
||||
Year: t.Year(),
|
||||
}
|
||||
|
||||
return &ivm, nil
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package viewmodels
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
|
||||
"github.com/Theodor-Springmann-Stiftung/kgpz_web/helpers/logging"
|
||||
"github.com/Theodor-Springmann-Stiftung/kgpz_web/providers/xmlprovider"
|
||||
)
|
||||
@@ -22,8 +24,10 @@ func NewSingleIssueView(y string, No string, lib *xmlprovider.Library) (*SingleI
|
||||
}
|
||||
|
||||
sivm := SingleIssueViewModel{IssueViewModel: *ivm}
|
||||
logging.Info(strconv.Itoa(len(lib.Pieces.All())) + "pieces in library")
|
||||
|
||||
for _, a := range lib.Pieces.Items.Piece {
|
||||
lib.Pieces.Items.Range(func(key, value interface{}) bool {
|
||||
a := value.(xmlprovider.Piece)
|
||||
for _, r := range a.IssueRefs {
|
||||
if r.Datum == y && r.Nr == No {
|
||||
p, err := NewPieceView(a)
|
||||
@@ -45,7 +49,8 @@ func NewSingleIssueView(y string, No string, lib *xmlprovider.Library) (*SingleI
|
||||
sivm.Additionals = append(sivm.Additionals, p)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
return &sivm, nil
|
||||
}
|
||||
|
||||
@@ -21,9 +21,11 @@ func YearView(year string, lib *xmlprovider.Library) (*YearViewModel, error) {
|
||||
res := YearViewModel{Year: year}
|
||||
res.Issues = make(IssuesByMonth, 12)
|
||||
last := ""
|
||||
for _, issue := range lib.Issues.Items.Issues {
|
||||
|
||||
lib.Issues.Items.Range(func(key, value interface{}) bool {
|
||||
issue := value.(xmlprovider.Issue)
|
||||
if len(issue.Datum.When) < 4 {
|
||||
continue
|
||||
return true
|
||||
}
|
||||
|
||||
date := issue.Datum.When[0:4]
|
||||
@@ -35,7 +37,8 @@ func YearView(year string, lib *xmlprovider.Library) (*YearViewModel, error) {
|
||||
if date == year {
|
||||
res.PushIssue(issue)
|
||||
}
|
||||
}
|
||||
return true
|
||||
})
|
||||
|
||||
if len(res.Issues) == 0 {
|
||||
return nil, errors.New("No issues found for year " + year)
|
||||
@@ -52,14 +55,12 @@ func (y *YearViewModel) PushIssue(i xmlprovider.Issue) {
|
||||
return
|
||||
}
|
||||
|
||||
month, _ := strconv.Atoi(iv.Month[2])
|
||||
|
||||
list, ok := y.Issues[month]
|
||||
list, ok := y.Issues[iv.Month]
|
||||
if !ok {
|
||||
list = []IssueViewModel{}
|
||||
}
|
||||
|
||||
y.Issues[month] = append(list, *iv)
|
||||
y.Issues[iv.Month] = append(list, *iv)
|
||||
}
|
||||
|
||||
func (y *YearViewModel) PushAvailable(s string) {
|
||||
|
||||
Reference in New Issue
Block a user