mirror of
https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
synced 2025-10-28 16:45:32 +00:00
Added sorting to arr in xmlprovider
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
@@ -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 -}}">
|
||||
← Zurück
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
{{ if $model.Next }}
|
||||
<a href="/{{- $model.Next.Datum.When.Year -}}/{{- $model.Next.Number.No -}}">
|
||||
Weiter →
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
<!-- Notizen -->
|
||||
{{ range $annotation := $piece.AnnotationNote.Annotations }}
|
||||
<div>
|
||||
<div class="italic">
|
||||
{{ $annotation.Inner.InnerXML }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user