Refactored Series List

This commit is contained in:
Simon Martens
2025-02-25 23:46:03 +01:00
parent 0a9e71d4e3
commit 3e1f5a2983
6 changed files with 385 additions and 614 deletions

View File

@@ -1,3 +1,30 @@
{{/* .common
type CommonReihenData struct {
Years []int
Places []*dbmodels.Place
Letters []string
Agents []*dbmodels.Agent
}
.result
type SeriesListResult struct {
Series []*dbmodels.Series
Entries map[string]*dbmodels.Entry // <-- Key is Entry.ID
EntriesSeries map[string][]*dbmodels.REntriesSeries // <-- Key is Series.ID
// Only on agent request
Agent *dbmodels.Agent
EntriesAgents map[string][]*dbmodels.REntriesAgents // <-- Key is Entry.ID
// Only on search request
IDSeries []*dbmodels.Series
AltSeries []*dbmodels.Series
// Only on place request
Place *dbmodels.Place
}
*/}}
{{ $model := . }}
{{ if and .startpage .record }}
{{ template "hero" . }}
@@ -13,7 +40,7 @@
{{ if not (or .search .hidden) }}
<div class="mt-2">
{{ template "alphabet" Dict "active" .letter "letters" .letters "search" .search }}
{{ template "alphabet" Dict "active" .letter "letters" $model.common.Letters "search" .search }}
</div>
{{ else }}
<div class="mt-2 border-b w-full"></div>
@@ -34,25 +61,26 @@
<!-- INFO: 3. Treffer -->
<div id="searchcontent" class="font-serif">
{{ if and .search .idseries }}
{{ if and .search $model.result.IDSeries }}
<div class="mb-1 max-w-[60rem] hyphens-auto">
{{ range $id, $r := .idseries }}
{{ template "_reihe" (Arr $r $model.entries $model.relations true false false) }}
{{ range $id, $r := $model.result.IDSeries }}
{{ template "_reihe" (Arr $r $model.result.Entries $model.result.EntriesSeries true false false) }}
{{ end }}
</div>
{{ end }}
{{ if .series }}
{{ if $model.result.Series }}
<div class="mb-1 max-w-[60rem] hyphens-auto">
{{ range $id, $r := .series }}
{{ template "_reihe" (Arr $r $model.entries $model.relations false false
{{ range $id, $r := $model.result.Series }}
{{ template "_reihe" (Arr $r $model.result.Entries $model.result.EntriesSeries false false
false)
}}
{{ end }}
</div>
{{ end }}
{{ if and .search .altseries }}
{{ if .idseries }}
{{ if and .search $model.result.AltSeries }}
{{ if $model.result.IDSeries }}
<div class="border-b text-sm font-sans text-right pb-0.5">
Treffer in Almanach-Nummer &uarr;
</div>
@@ -64,7 +92,7 @@
</div>
{{ end }}
{{ if not (or .series .idseries) }}
{{ if not (or $model.result.Series $model.result.IDSeries) }}
<div class="border-b text-sm font-sans text-right pb-0.5">
Keine Treffer im Reihentitel
<i class="ri-forbid-line inline-bloc -mr-0.5"></i>
@@ -74,12 +102,12 @@
Treffer in allen Feldern (inkl. Anmerkungen &amp; Verweise) &darr;
</div>
<div class="mb-1 max-w-[60rem] hyphens-auto">
{{ range $id, $r := .altseries }}
{{ template "_reihe" (Arr $r $model.entries $model.relations false true true) }}
{{ range $id, $r := $model.result.AltSeries }}
{{ template "_reihe" (Arr $r $model.result.Entries $model.result.EntriesSeries false true true) }}
{{ end }}
</div>
{{ end }}
{{ if not (or .series .altseries .idseries) }}
{{ if not (or $model.result.Series $model.result.AltSeries $model.result.IDSeries) }}
<div class="mt-8">
Keine Reihen
{{ if .search }}für {{ .search }}{{ end }}

View File

@@ -2,7 +2,7 @@
<div
class="hidden lg:flex min-w-[32rem] max-w-[32rem] float-right ml-6 flex-col gap-y-8 [&>*]:pb-12
[&>*]:px-12 [&>*]:pt-8 [&>*]:bg-slate-100">
{{ if .agents }}
{{ if $model.common.Agents }}
<div class="">
<h2 class="mb-6">Herausgeber:innen, Verlage &amp; Druckereien</h2>
<filter-list
@@ -13,7 +13,7 @@
<script type="module">
let agentList = document.getElementById("agent-list");
if (agentList) {
agentList.items = {{ .agents }};
agentList.items = {{ $model.common.Agents }};
agentList.setSearchTextFunc((item) => {
return item.name;
@@ -31,7 +31,7 @@
</script>
{{ end }}
{{ if .places }}
{{ if $model.common.Places }}
<div>
<h2 class="mb-6">Erscheinungsorte</h2>
<filter-list
@@ -41,11 +41,11 @@
</div>
<script type="module">
let placeList = document.getElementById("place-list");
if (placeList) placeList.items = {{ .places }};
if (placeList) placeList.items = {{ $model.common.Places }};
</script>
{{ end }}
{{ if .years }}
{{ if $model.common.Years }}
<div>
<h2 class="mb-6">Geltungsjahre</h2>
<filter-list
@@ -57,7 +57,7 @@
<script type="module">
let yearList = document.getElementById("year-list");
if (yearList) {
yearList.items = {{ .years }};
yearList.items = {{ $model.common.Years }};
yearList.setHREFFunc((item) => {
return String(item);