some bug fixes

This commit is contained in:
Simon Martens
2024-12-22 22:32:07 +01:00
parent 0ad9e0122f
commit 2f6eef4aa5
5 changed files with 17 additions and 46 deletions

View File

@@ -35,34 +35,23 @@ func (i Issue) Keys() []string {
} }
res := make([]string, 2) res := make([]string, 2)
date := i.Datum.When date := i.Datum.When.String()
if date != "" { if date != "" {
res = append(res, date) res = append(res, date)
} }
if ref, err := i.Reference(); err == nil { res = append(res, i.Reference())
res = append(res, ref)
}
i.keys = res i.keys = res
return res return res
} }
// TODO: We could even cache this func (i Issue) Year() int {
func (i Issue) Year() (int, error) { return i.Datum.When.Year
if date := i.Datum.Date(); date != nil {
return date.Year(), nil
}
return 0, InvalidDateError
} }
func (i Issue) Reference() (string, error) { func (i Issue) Reference() string {
if date := i.Datum.Date(); date != nil { return strconv.Itoa(i.Number.No) + "-" + i.Datum.When.String()
return strconv.Itoa(date.Year()) + "-" + strconv.Itoa(i.Number.No), nil
}
return "", InvalidDateError
} }
func (i Issue) String() string { func (i Issue) String() string {

View File

@@ -41,21 +41,17 @@ func (p Piece) Keys() []string {
uid := uuid.New() uid := uuid.New()
for _, i := range p.IssueRefs { for _, i := range p.IssueRefs {
if d := i.Date(); d != nil { ret = append(ret, strconv.Itoa(i.When.Year)+"-"+strconv.Itoa(i.Nr)+"-"+uid.String())
ret = append(ret, strconv.Itoa(d.Year())+"-"+strconv.Itoa(i.Nr)+"-"+uid.String())
}
} }
p.keys = ret p.keys = ret
return ret return ret
} }
func (p Piece) ReferencesIssue(y, no int) (*IssueRef, bool) { func (p Piece) ReferencesIssue(y, no int) (*IssueRef, bool) {
for _, i := range p.IssueRefs { for _, i := range p.IssueRefs {
if i.Nr == no { if i.Nr == no {
d := i.Date() if i.When.Year == y {
if d != nil && d.Year() == y {
return &i, true return &i, true
} }
} }

View File

@@ -53,19 +53,13 @@ func NewSingleIssueView(y string, no string, lib *xmlprovider.Library) (*IssueVM
} }
func PiecesForIsssue(lib *xmlprovider.Library, issue xmlprovider.Issue) (*PiecesByPage, *PiecesByPage, error) { func PiecesForIsssue(lib *xmlprovider.Library, issue xmlprovider.Issue) (*PiecesByPage, *PiecesByPage, error) {
date := issue.Datum.Date() year := issue.Datum.When.Year
if date == nil {
return nil, nil, fmt.Errorf("Issue has no date")
}
year := date.Year()
ppi := PiecesByPage{Items: make(map[int][]PieceListitemVM)} ppi := PiecesByPage{Items: make(map[int][]PieceListitemVM)}
ppa := PiecesByPage{Items: make(map[int][]PieceListitemVM)} ppa := PiecesByPage{Items: make(map[int][]PieceListitemVM)}
slog.Debug(fmt.Sprintf("Checking piece for year %v, number %v", year, issue.Number.No)) slog.Debug(fmt.Sprintf("Checking piece for year %v, number %v", year, issue.Number.No))
for _, piece := range lib.Pieces.Array { for _, piece := range lib.Pieces.Array {
if d, ok := piece.ReferencesIssue(year, issue.Number.No); ok { if d, ok := piece.ReferencesIssue(year, issue.Number.No); ok {
slog.Debug(fmt.Sprintf("Found piece %v in issue %v-%v", piece, year, issue.Number.No)) slog.Debug(fmt.Sprintf("Found piece %v in issue %v-%v", piece, year, issue.Number.No))
p := PieceListitemVM{Piece: piece, Reference: *d} p := PieceListitemVM{Piece: piece, Reference: *d}

View File

@@ -1,8 +1,6 @@
package viewmodels package viewmodels
import ( import (
"time"
"github.com/Theodor-Springmann-Stiftung/kgpz_web/providers/xmlprovider" "github.com/Theodor-Springmann-Stiftung/kgpz_web/providers/xmlprovider"
) )
@@ -17,16 +15,11 @@ type IssueListitemVM struct {
} }
func ListitemFromIssue(i xmlprovider.Issue) (*IssueListitemVM, error) { func ListitemFromIssue(i xmlprovider.Issue) (*IssueListitemVM, error) {
t, err := time.Parse(TLAYOUT, i.Datum.When)
if err != nil {
return nil, err
}
return &IssueListitemVM{ return &IssueListitemVM{
No: i.Number.No, No: i.Number.No,
Issue: i, Issue: i,
Day: t.Day(), Day: i.Datum.When.Day,
Month: int(t.Month()), Month: i.Datum.When.Month,
Year: t.Year(), Year: i.Datum.When.Year,
}, nil }, nil
} }

View File

@@ -31,12 +31,11 @@ func YearView(year int, lib *xmlprovider.Library) (*YearVM, error) {
lib.Issues.Lock() lib.Issues.Lock()
for _, issue := range lib.Issues.Array { for _, issue := range lib.Issues.Array {
if y, err := issue.Year(); err == nil { y := issue.Datum.When.Year
years[y] = true years[y] = true
if y == year { if y == year {
if issuevm, err := ListitemFromIssue(issue); err == nil { if issuevm, err := ListitemFromIssue(issue); err == nil {
issues[issuevm.Month] = append(issues[issuevm.Month], *issuevm) issues[issuevm.Month] = append(issues[issuevm.Month], *issuevm)
}
} }
} }
} }