Files
musenalm/views/routes/person/body.gohtml
2025-03-01 08:09:34 +01:00

205 lines
6.0 KiB
Plaintext

{{/* .result:
type AgentResult struct {
Agent *dbmodels.Agent
BResult []*dbmodels.Series // Sorted
Entries map[string]*dbmodels.Entry // KEY: Entry ID
EntriesSeries map[string][]*dbmodels.REntriesSeries // KEY: Series ID
EntriesAgents map[string][]*dbmodels.REntriesAgents // KEY: Entry ID
CResult []*dbmodels.Entry /// Sorted
Contents map[string][]*dbmodels.Content // KEY: entry ID
ContentsAgents map[string][]*dbmodels.RContentsAgents // KEY: Content ID
Agents map[string]*dbmodels.Agent // KEY: Agent ID
}
*/}}
{{ $model := . }}
<div id="breadcrumbs">
<div>
<div>
<a href="/personen?letter={{- First $model.result.Agent.Name -}}"
>Personen &amp; Körperschaften</a
>
<i class="ri-arrow-right-wide-line"></i> <b>{{ $model.result.Agent.Name }}</b>
</div>
<div class="backbutton">
<a href="/personen/" class="no-underline">
<i class="ri-arrow-left-long-line"></i> Alle Personen &amp; Körperschaften
</a>
</div>
</div>
</div>
<div class="container-normal font-serif mt-12">
{{ if $model.result.Agent.CorporateBody }}
<div class="font-sans">
<i class="ri-team-line"></i>
<span class="filtercategory">Körperschaft</span>
</div>
{{ else }}
<div class="font-sans">
<i class="ri-user-line"></i>
<span class="filtercategory">Person</span>
</div>
{{ end }}
<h1 class="text-3xl font-bold">{{ $model.result.Agent.Name }}</h1>
{{- if $model.result.Agent.Pseudonyms -}}
<p class="italic">
auch:
<span class="">{{ $model.result.Agent.Pseudonyms }}</span>
</p>
{{- end -}}
<div>
<span class="">
{{ $model.result.Agent.BiographicalData }}
</span>
<span class="">
{{- $arr := $model.result.Agent.ProfessionArray -}}
{{- if $arr -}}
{{- range $i, $p := $arr -}}
<a
href="/personen/?letter={{- Upper (First $model.result.Agent.Name) -}}&filter={{ Lower $p }}#{{- $model.result.Agent.Id -}}"
class="inline-block align-middle bg-slate-200 px-2 font-sans text-sm py-0.5 rounded mx-1
hover:text-slate-900 no-underline">
{{- $p -}}
</a>
{{- end -}}
{{- end -}}
</span>
</div>
</div>
{{- if .result.BResult -}}
<div class="container-normal flex flex-col font-serif mt-7">
<h2 class=" font-sans flex flex-row items-center gap-x-3 mb-6">
<div class="-ml-0.5">
<i class="ri-book-line"></i>
{{ if eq $model.result.LenEntries 1 }}
<b>Ein Band</b>
{{- else }}
<b>{{- $model.result.LenEntries }}</b>
Bände
{{- end }}
in
{{- if eq $model.result.LenSeries 1 }}
<b>einer Reihe</b>
{{- else }}
<b>{{ $model.result.LenSeries }}</b> Reihen
{{- end }}
</div>
{{- if len $model.result.CResult -}}
<div>&middot;</div>
<div class="flex flex-row py-1 items-center text-base">
<i class="ri-arrow-down-double-line mr-1"></i>
<a class="" href="#almanachcontents">Beiträge</a>
<div
class="inline-block mx-2 text-xs bg-slate-800 text-white font-bold px-1.5 py-0.5
rounded">
{{- $model.result.LenContents -}}
</div>
</div>
{{- end -}}
</h2>
<div class="flex flex-col gap-y-6 mb-6">
{{ range $id, $r := .result.BResult }}
<div class="grow-0 max-w-[48rem]">
<div>
<span class="font-bold">{{ $r.Title }}</span>
</div>
{{ if $r.Annotation }}
<div class="max-w-[48rem]">
<span class="">{{ Safe $r.Annotation }}</span>
</div>
{{ end }}
<div class="">
{{- $bds := index $model.result.EntriesSeries $r.Id -}}
{{ template "personreiherelations" (Arr $r $bds $model.result.Entries true
$model.result.EntriesAgents)
}}
</div>
</div>
{{ end }}
</div>
</div>
{{ end }}
{{- if len $model.result.CResult -}}
<div class="container-normal mt-12 pt-0" id="almanachcontents">
<div class="font-sans flex flex-row gap-x-3 mb-8">
<div>
<i class="ri-article-line"></i>
{{ if eq $model.result.LenContents 1 }}
<b>Ein Beitrag</b>
{{- else }}
<b>{{- $model.result.LenContents }}</b>
Beiträge
{{- end }}
in
{{- if eq (len $model.result.CResult) 1 }}
<b>einem Band</b>
{{- else }}
<b>{{ len $model.result.CResult }}</b> Bänden
{{- end }}
</div>
<div>&middot;</div>
<div>
<input type="checkbox" id="showall" autocomplete="off" />
<label for="showall" class="cursor-pointer select-none ml-1">Alle anzeigen</label>
<script type="module">
const tablist = document.getElementById("entries-tabs");
const checkbox = document.getElementById("showall");
{{- if eq (len $model.result.CResult) 1 -}}
if (checkbox) {
if (tablist) {
tablist.showAll();
}
checkbox.checked = true;
checkbox.disabled = true;
}
{{- else -}}
if (tablist && checkbox) {
checkbox.addEventListener("change", () => {
if (checkbox && checkbox.checked) {
tablist.showAll();
} else {
tablist.default();
}
});
}
{{- end -}}
</script>
</div>
</div>
<div class="mt-8">
<tab-list id="entries-tabs">
{{- range $_, $e := $model.result.CResult -}}
{{- $contents := index $model.result.Contents $e.Id -}}
<div
class="font-serif flex flex-row justify-between hover:text-slate-900 text-stone-600
font-bold border-b pb-0.5 mb-2 tab-list-head items-end">
<div>
{{ $e.PreferredTitle }}
<i class="ri-arrow-right-s-fill show-closed"></i>
<i class="ri-arrow-down-s-fill show-opened"></i>
</div>
<div
class="inline-block font-sans bg-slate-800 text-white h-max text-sm px-1.5 rounded">
{{- len $contents -}}
</div>
</div>
<div class="mb-7 hidden tab-list-panel">
{{- range $i, $c := $contents -}}
{{- $rels := index $model.result.ContentsAgents $c.Id -}}
{{- template "_content" Arr $c $e $rels $model.result.Agents false true -}}
{{- end -}}
</div>
{{- end -}}
</tab-list>
</div>
</div>
{{- end -}}