mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-12-16 14:15:30 +00:00
Search Indicators
This commit is contained in:
@@ -28,33 +28,8 @@ Modelle umwandeln (zzt RecordProxy)
|
|||||||
- Ersellen & Abfragen FTS5-Tabellen
|
- Ersellen & Abfragen FTS5-Tabellen
|
||||||
- Erstellen Textseiten
|
- Erstellen Textseiten
|
||||||
|
|
||||||
- Technologie-Stack auf Server-Rendering / Go Templates umgestellt
|
|
||||||
- Die Seiten sollten jetzt insgesamt schneller laden
|
|
||||||
|
|
||||||
- Man kann auf der Startseite und in der Suche nach Almanach-Nummern suchen
|
|
||||||
- Überall werden die Almanachnummer und Inhaltsnummer angezeigt
|
|
||||||
- Die URL referenziert die Almanachnummern, nicht mher die Datenbank-IDs
|
|
||||||
|
|
||||||
- In der Almanach-Ansicht werden die Abkürzungen erklärt
|
|
||||||
- In der Almanach- und Suchansicht werden Sammlungen abgehoben
|
|
||||||
- In der Almanach- und Suchansicht werden auch mehrere Bilder zu einem Eintrag angezeigt, falls vorhanden
|
|
||||||
- In der Almanach- und Suchansicht kann nach Inhalten frei gefiltert werden, oder nach Typ
|
|
||||||
|
|
||||||
- Es gibt URLs, die fest verlinkt werden können für einzelne:
|
|
||||||
- Personen
|
|
||||||
- Reihen
|
|
||||||
- Bände
|
|
||||||
- Beiträge
|
|
||||||
- Alle Suchanfragen
|
|
||||||
|
|
||||||
- Die Suche ist klar nach Typ unterteilt und insgesamt zuverlässiger
|
|
||||||
- Zusätzlich zur jetzigen Suchfunktion gibt es für Beiträge und Bände noch eine Detailsuche
|
|
||||||
- Suchergebnisse können nach Typ, Person, Jahr gefiltert werden
|
|
||||||
- Suchergebnisse könnnen nach Jahr und Band, nach Band und Jahr (nach Personen) sortiert werden
|
|
||||||
|
|
||||||
|
|
||||||
TODO danach:
|
TODO danach:
|
||||||
- Google-Suchoptimierung
|
|
||||||
- Error Pages prüfen & error-Verhalten von HTMX
|
- Error Pages prüfen & error-Verhalten von HTMX
|
||||||
- Weißraum in den Antworten
|
- Weißraum in den Antworten
|
||||||
- Antworten komprimieren
|
- Antworten komprimieren
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class O extends HTMLElement {
|
|||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
this.innerHTML = `
|
this.innerHTML = `
|
||||||
<a href="${this.getURL()}" class="!no-underline block text-base" hx-target="#searchresults" hx-select="#searchresults" hx-swap="outerHTML show:window:top">
|
<a href="${this.getURL()}" class="!no-underline block text-base" hx-target="#searchresults" hx-select="#searchresults" hx-indicator="body" hx-swap="outerHTML show:window:top">
|
||||||
<div class="flex flex-row filter-pill rounded-lg bg-orange-100 hover:saturate-50 px-2.5">
|
<div class="flex flex-row filter-pill rounded-lg bg-orange-100 hover:saturate-50 px-2.5">
|
||||||
${this.renderIcon()}
|
${this.renderIcon()}
|
||||||
<div class="flex flex-row filter-pill-label-value !items-baseline text-slate-700">
|
<div class="flex flex-row filter-pill-label-value !items-baseline text-slate-700">
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -75,6 +75,7 @@
|
|||||||
id="simplesearchform"
|
id="simplesearchform"
|
||||||
class="w-full font-serif"
|
class="w-full font-serif"
|
||||||
method="get"
|
method="get"
|
||||||
|
hx-indicator="body"
|
||||||
action="/suche/baende"
|
action="/suche/baende"
|
||||||
autocomplete="off">
|
autocomplete="off">
|
||||||
{{- if not $model.parameters.Extended -}}
|
{{- if not $model.parameters.Extended -}}
|
||||||
@@ -212,6 +213,10 @@
|
|||||||
<div class="container-normal" id="searchresults">
|
<div class="container-normal" id="searchresults">
|
||||||
<div class="border-b border-zinc-300 flex flex-row justify-between">
|
<div class="border-b border-zinc-300 flex flex-row justify-between">
|
||||||
<div>
|
<div>
|
||||||
|
<div class="inline-block">
|
||||||
|
<i class="ri-hourglass-2-fill request-indicator spinning"></i>
|
||||||
|
</div>
|
||||||
|
<div class="request-indicator">·</div>
|
||||||
{{ if $model.parameters.Query -}}
|
{{ if $model.parameters.Query -}}
|
||||||
Suche nach <b>»{{ $model.parameters.Query }}«</b> ·
|
Suche nach <b>»{{ $model.parameters.Query }}«</b> ·
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
@@ -247,6 +252,7 @@
|
|||||||
name="sort"
|
name="sort"
|
||||||
id="sort"
|
id="sort"
|
||||||
hx-get="{{- $model.parameters.ToQueryParamsBaende -}}"
|
hx-get="{{- $model.parameters.ToQueryParamsBaende -}}"
|
||||||
|
hx-indicator="body"
|
||||||
trigger="change"
|
trigger="change"
|
||||||
hx-push-url="true"
|
hx-push-url="true"
|
||||||
hx-select="main"
|
hx-select="main"
|
||||||
|
|||||||
@@ -76,6 +76,7 @@
|
|||||||
id="simplesearchform"
|
id="simplesearchform"
|
||||||
class="w-full font-serif"
|
class="w-full font-serif"
|
||||||
method="get"
|
method="get"
|
||||||
|
hx-indicator="body"
|
||||||
action="/suche/beitraege"
|
action="/suche/beitraege"
|
||||||
autocomplete="off">
|
autocomplete="off">
|
||||||
{{- if not $model.parameters.Extended -}}
|
{{- if not $model.parameters.Extended -}}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
<div class="border-b border-zinc-300 flex flex-row justify-between">
|
<div class="border-b border-zinc-300 flex flex-row justify-between">
|
||||||
<div class="flex flex-row gap-x-2">
|
<div class="flex flex-row gap-x-2">
|
||||||
|
<div><i class="ri-hourglass-2-fill request-indicator spinning"></i></div>
|
||||||
|
<div class="request-indicator">·</div>
|
||||||
{{ if $model.parameters.Query -}}
|
{{ if $model.parameters.Query -}}
|
||||||
<div>Suche nach <b>»{{ $model.parameters.Query }}«</b></div>
|
<div>Suche nach <b>»{{ $model.parameters.Query }}«</b></div>
|
||||||
<div>·</div>
|
<div>·</div>
|
||||||
@@ -69,6 +71,7 @@
|
|||||||
hx-select="#searchresults"
|
hx-select="#searchresults"
|
||||||
hx-target="#searchresults"
|
hx-target="#searchresults"
|
||||||
hx-swap="outerHTML"
|
hx-swap="outerHTML"
|
||||||
|
hx-indicator="body"
|
||||||
{{ if $model.filters.OnlyScans -}}checked{{- end -}} />
|
{{ if $model.filters.OnlyScans -}}checked{{- end -}} />
|
||||||
|
|
||||||
<label
|
<label
|
||||||
@@ -87,6 +90,7 @@
|
|||||||
trigger="change"
|
trigger="change"
|
||||||
hx-push-url="true"
|
hx-push-url="true"
|
||||||
hx-select="#subresults"
|
hx-select="#subresults"
|
||||||
|
hx-indicator="body"
|
||||||
hx-target="#subresults"
|
hx-target="#subresults"
|
||||||
hx-swap="outerHTML show:window:top">
|
hx-swap="outerHTML show:window:top">
|
||||||
<option
|
<option
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
{{ $extendable := . }}
|
{{ $extendable := . }}
|
||||||
|
|
||||||
|
|
||||||
<div class="col-span-6 flex flex-row text-stone-700 gap-x-2">
|
<div class="flex flex-row text-stone-700 gap-x-2">
|
||||||
<div>
|
<div>
|
||||||
<i class="ri-information-2-fill"></i>
|
<i class="ri-information-2-fill"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="font-sans hyphens-auto text-sm pt-1">
|
<div class="font-sans hyphens-auto text-sm pt-1 max-w-[48rem]">
|
||||||
Die Suche durchsucht ganze Datensätze nach dem Vorkommen aller eingegebenen Suchbegriffe. Felder
|
Die Suche durchsucht ganze Datensätze nach dem Vorkommen aller eingegebenen Suchbegriffe. Felder
|
||||||
können oben einzeln aus der Suche ausgeschlossen werden. Auch partielle Treffer in Worten werden
|
können oben einzeln aus der Suche ausgeschlossen werden. Auch partielle Treffer in Worten werden
|
||||||
angezeigt. Wörter mit weniger als drei Zeichen, Sonderzeichen – auch Satzzeichen –
|
angezeigt. Wörter mit weniger als drei Zeichen, Sonderzeichen – auch Satzzeichen –
|
||||||
|
|||||||
@@ -15,7 +15,9 @@
|
|||||||
placeholder="Suchbegriff (min. 3 Zeichen)"
|
placeholder="Suchbegriff (min. 3 Zeichen)"
|
||||||
class="w-full grow
|
class="w-full grow
|
||||||
placeholder:italic font-serif placeholder:font-sans" />
|
placeholder:italic font-serif placeholder:font-sans" />
|
||||||
<button id="submitbutton" type="submit" class="min-w-36" form="simplesearchform">Suchen</button>
|
<button id="submitbutton" type="submit" class="min-w-36" form="simplesearchform">
|
||||||
|
<i class="ri-hourglass-2-fill request-indicator spinning mr-1"></i>Suchen
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ if $extendable }}
|
{{ if $extendable }}
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ class FilterPill extends HTMLElement {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
this.innerHTML = `
|
this.innerHTML = `
|
||||||
<a href="${this.getURL()}" class="!no-underline block text-base" hx-target="#searchresults" hx-select="#searchresults" hx-swap="outerHTML show:window:top">
|
<a href="${this.getURL()}" class="!no-underline block text-base" hx-target="#searchresults" hx-select="#searchresults" hx-indicator="body" hx-swap="outerHTML show:window:top">
|
||||||
<div class="flex flex-row filter-pill rounded-lg bg-orange-100 hover:saturate-50 px-2.5">
|
<div class="flex flex-row filter-pill rounded-lg bg-orange-100 hover:saturate-50 px-2.5">
|
||||||
${this.renderIcon()}
|
${this.renderIcon()}
|
||||||
<div class="flex flex-row filter-pill-label-value !items-baseline text-slate-700">
|
<div class="flex flex-row filter-pill-label-value !items-baseline text-slate-700">
|
||||||
|
|||||||
@@ -484,7 +484,35 @@
|
|||||||
/*direction: rtl;*/
|
/*direction: rtl;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body .request-indicator {
|
||||||
|
@apply !hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinning {
|
||||||
|
animation: spin 1s ease-out infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.htmx-request #simplesearchform #sumbmitbutton {
|
||||||
|
@apply cursor-wait pointer-events-none;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.htmx-request .request-indicator {
|
||||||
|
@apply !inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
.tab-list-head[aria-pressed="true"] {
|
.tab-list-head[aria-pressed="true"] {
|
||||||
@apply !text-slate-900 bg-stone-50;
|
@apply !text-slate-900 bg-stone-50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
0% {
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
80% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
} /* Most rotation happens early */
|
||||||
|
100% {
|
||||||
|
transform: rotate(360deg);
|
||||||
|
} /* Pause at the final position */
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user