Files
musenalm/views/routes/reihen/body.gohtml
2025-02-25 23:46:03 +01:00

140 lines
3.8 KiB
Plaintext

{{/* .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" . }}
{{ end }}
<!-- INFO: 1. Container -->
<div x-data="{ search : '{{ $model.search }}' }" :class="search ? 'searchfilter' : ''">
<!-- INFO: 2. Header -->
<div id="pageheading" class="headingcontainer">
<h1 class="heading">Bände nach Reihentiteln</h1>
{{ template "notifier" . }}
{{ if not (or .search .hidden) }}
<div class="mt-2">
{{ template "alphabet" Dict "active" .letter "letters" $model.common.Letters "search" .search }}
</div>
{{ else }}
<div class="mt-2 border-b w-full"></div>
{{ end }}
</div>
<!-- INFO: 2. Breite Anzeige -->
<div
class="{{ if or .search .hidden }}
container-normal
{{ else }}
container-oversize
{{ end }} mt-4">
{{ if not (or .search .hidden) }}
{{ template "filter" . }}
{{ end }}
<!-- INFO: 3. Treffer -->
<div id="searchcontent" class="font-serif">
{{ if and .search $model.result.IDSeries }}
<div class="mb-1 max-w-[60rem] hyphens-auto">
{{ range $id, $r := $model.result.IDSeries }}
{{ template "_reihe" (Arr $r $model.result.Entries $model.result.EntriesSeries true false false) }}
{{ end }}
</div>
{{ end }}
{{ if $model.result.Series }}
<div class="mb-1 max-w-[60rem] hyphens-auto">
{{ 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 $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>
{{ end }}
{{ if .series }}
<div class="border-b text-sm font-sans text-right pb-0.5">
Treffer in Reihentiteln &uarr;
</div>
{{ end }}
{{ 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>
</div>
{{ end }}
<div class="border-t mb-1.5 text-sm font-sans text-right pt-0.5">
Treffer in allen Feldern (inkl. Anmerkungen &amp; Verweise) &darr;
</div>
<div class="mb-1 max-w-[60rem] hyphens-auto">
{{ 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 $model.result.Series $model.result.AltSeries $model.result.IDSeries) }}
<div class="mt-8">
Keine Reihen
{{ if .search }}für {{ .search }}{{ end }}
gefunden.
</div>
{{ end }}
{{ if $model.search }}
<script type="module">
let elements = document.querySelectorAll('.reihen-text');
let mark_instance = new Mark(elements);
// INFO: we wait a little bit before marking, to settle everything
setTimeout(() => {
mark_instance.mark('{{ $model.search }}', {
"seperateWordSearch": true,
});
}, 200);
</script>
{{ end }}
<!-- INFO: Ende 3. Treffer -->
</div>
<!-- INFO: Ende 2. Breite Anzeige -->
</div>
<!-- INFO: Ende 1. Container -->
</div>