Added sorting to arr in xmlprovider

This commit is contained in:
Simon Martens
2025-01-16 23:46:54 +01:00
parent ff310265e4
commit e8e8d9ae00
7 changed files with 53 additions and 9 deletions

View File

@@ -30,7 +30,7 @@ func GetIssue(kgpz *xmlmodels.Library) fiber.Handler {
return c.SendStatus(fiber.StatusNotFound)
}
issue, err := viewmodels.NewSingleIssueView(y, d, kgpz)
issue, err := viewmodels.NewSingleIssueView(yi, di, kgpz)
if err != nil {
logging.Error(err, "Issue could not be found")

View File

@@ -1,6 +1,7 @@
package xmlprovider
import (
"log"
"strconv"
"strings"
)
@@ -47,7 +48,6 @@ func Sort[T XMLItem](i, j T) int {
}
int_b, err := strconv.Atoi(sort_b[i])
if err != nil {
if item < sort_b[i] {
return -1
}

View File

@@ -23,17 +23,46 @@ type PiecesByPage struct {
// TODO: Next & Prev
type IssueVM struct {
xmlmodels.Issue
Next *xmlmodels.Issue
Prev *xmlmodels.Issue
Pieces PiecesByPage
AdditionalPieces PiecesByPage
}
func NewSingleIssueView(y string, no string, lib *xmlmodels.Library) (*IssueVM, error) {
issue := lib.Issues.Item(no + "-" + y)
func NewSingleIssueView(y, no int, lib *xmlmodels.Library) (*IssueVM, error) {
lib.Issues.Lock()
var issue *xmlmodels.Issue = nil
var next *xmlmodels.Issue = nil
var prev *xmlmodels.Issue = nil
for i, iss := range lib.Issues.Array {
if iss.Datum.When.Year == y && iss.Number.No == no {
issue = &iss
if i > 0 {
prev = &lib.Issues.Array[i-1]
}
if i < len(lib.Issues.Array)-1 {
next = &lib.Issues.Array[i+1]
}
}
}
if issue == nil {
return nil, fmt.Errorf("No issue found for %v-%v", y, no)
}
sivm := IssueVM{Issue: *issue}
var Next *xmlmodels.Issue = nil
var Prev *xmlmodels.Issue = nil
if next != nil {
Next = &*next
}
if prev != nil {
Prev = &*prev
}
sivm := IssueVM{Issue: *issue, Next: Next, Prev: Prev}
lib.Issues.Unlock()
ppi, ppa, err := PiecesForIsssue(lib, *issue)
if err != nil {
return nil, err

File diff suppressed because one or more lines are too long

View File

@@ -5,6 +5,20 @@
Zurück zum Jahr
{{ $date.Year }}
</a>
<div>
{{ if $model.Prev }}
<a href="/{{- $model.Prev.Datum.When.Year -}}/{{- $model.Prev.Number.No -}}">
&larr; Zurück
</a>
{{ end }}
{{ if $model.Next }}
<a href="/{{- $model.Next.Datum.When.Year -}}/{{- $model.Next.Number.No -}}">
Weiter &rarr;
</a>
{{ end }}
</div>
</div>
<div>

View File

@@ -46,7 +46,7 @@
<!-- Notizen -->
{{ range $annotation := $piece.AnnotationNote.Annotations }}
<div>
<div class="italic">
{{ $annotation.Inner.InnerXML }}
</div>
{{ end }}

View File

@@ -39,12 +39,13 @@ func (i Issue) Keys() []string {
}
res := make([]string, 2)
res = append(res, i.Reference())
date := i.Datum.When.String()
if date != "" {
res = append(res, date)
}
res = append(res, i.Reference())
i.keys = res
return res
@@ -55,7 +56,7 @@ func (i Issue) Year() int {
}
func (i Issue) Reference() string {
return strconv.Itoa(i.Number.No) + "-" + strconv.Itoa(i.Datum.When.Year)
return strconv.Itoa(i.Datum.When.Year) + "-" + strconv.Itoa(i.Number.No)
}
func (i Issue) String() string {