mirror of
				https://github.com/Theodor-Springmann-Stiftung/kgpz_web.git
				synced 2025-10-29 17:15:31 +00:00 
			
		
		
		
	Verbesserungen kategoireansicht, karte aof ortsansicht
This commit is contained in:
		| @@ -71,70 +71,66 @@ | ||||
|  | ||||
| 		{{- /* Pieces List */ -}} | ||||
| 		<div> | ||||
| 			<h2 class="text-xl font-semibold text-slate-800 mb-4"> | ||||
| 			<h2 class="font-bold mb-4"> | ||||
| 				<i class="ri-newspaper-line mr-2"></i><u class="decoration underline-offset-3">Beiträge</u> ({{ .model.PieceCount }}) | ||||
| 			</h2> | ||||
|  | ||||
| 			{{- if .model.Pieces -}} | ||||
| 				<div class="space-y-6 max-w-[85ch]"> | ||||
| 					<div> | ||||
| 						<h3 class="text-lg font-bold font-serif text-slate-800 mb-3">{{ .model.Year }}</h3> | ||||
| 				<div class="columns-2 gap-6 hyphens-auto"> | ||||
| 					<h3 class="font-bold font-serif text-slate-800 mb-1 break-inside-avoid">{{ .model.Year }}</h3> | ||||
|  | ||||
| 						<div class="space-y-1"> | ||||
| 							{{- /* Group pieces by title within the year */ -}} | ||||
| 							{{- $groupedPieces := dict -}} | ||||
| 							{{- range $_, $p := .model.Pieces -}} | ||||
| 								{{- $groupKey := "" -}} | ||||
| 								{{- if $p.Title -}} | ||||
| 									{{- $groupKey = index $p.Title 0 -}} | ||||
| 								{{- else if $p.Incipit -}} | ||||
| 									{{- $groupKey = index $p.Incipit 0 -}} | ||||
| 								{{- else -}} | ||||
| 									{{- $groupKey = printf "untitled-%s" $p.ID -}} | ||||
| 								{{- end -}} | ||||
| 					{{- /* Group pieces by title within the year */ -}} | ||||
| 					{{- $groupedPieces := dict -}} | ||||
| 					{{- range $_, $p := .model.Pieces -}} | ||||
| 						{{- $groupKey := "" -}} | ||||
| 						{{- if $p.Title -}} | ||||
| 							{{- $groupKey = index $p.Title 0 -}} | ||||
| 						{{- else if $p.Incipit -}} | ||||
| 							{{- $groupKey = index $p.Incipit 0 -}} | ||||
| 						{{- else -}} | ||||
| 							{{- $groupKey = printf "untitled-%s" $p.ID -}} | ||||
| 						{{- end -}} | ||||
|  | ||||
| 								{{- $existing := index $groupedPieces $groupKey -}} | ||||
| 								{{- if $existing -}} | ||||
| 									{{- $groupedPieces = merge $groupedPieces (dict $groupKey (append $existing $p)) -}} | ||||
| 								{{- else -}} | ||||
| 									{{- $groupedPieces = merge $groupedPieces (dict $groupKey (slice $p)) -}} | ||||
| 								{{- end -}} | ||||
| 							{{- end -}} | ||||
| 						{{- $existing := index $groupedPieces $groupKey -}} | ||||
| 						{{- if $existing -}} | ||||
| 							{{- $groupedPieces = merge $groupedPieces (dict $groupKey (append $existing $p)) -}} | ||||
| 						{{- else -}} | ||||
| 							{{- $groupedPieces = merge $groupedPieces (dict $groupKey (slice $p)) -}} | ||||
| 						{{- end -}} | ||||
| 					{{- end -}} | ||||
|  | ||||
| 							{{- range $groupKey, $groupedItems := $groupedPieces -}} | ||||
| 								<div> | ||||
| 									<div class="pb-1 text-lg indent-4"> | ||||
| 										{{- /* Use first piece for display text with colon format for places */ -}} | ||||
| 										{{ template "_unified_piece_entry" (dict "Piece" (index $groupedItems 0) "CurrentActorID" "" "DisplayMode" "place" "ShowPlaceTags" false "UseColonFormat" true "ShowContinuation" false) }} | ||||
| 					{{- range $groupKey, $groupedItems := $groupedPieces -}} | ||||
| 						<div class="break-inside-avoid mb-1"> | ||||
| 							<div class="pb-1 indent-4"> | ||||
| 								{{- /* Use first piece for display text with colon format for places */ -}} | ||||
| 								{{ template "_unified_piece_entry" (dict "Piece" (index $groupedItems 0) "CurrentActorID" "" "DisplayMode" "place" "ShowPlaceTags" false "UseColonFormat" true "ShowContinuation" false) }} | ||||
|  | ||||
| 										{{- /* Show all citations from all pieces in this group inline with commas */ -}} | ||||
| 										{{ " " }}{{- range $groupIndex, $groupItem := $groupedItems -}} | ||||
| 											{{- range $issueIndex, $issue := $groupItem.IssueRefs -}} | ||||
| 												{{- /* Only show citations for the current year */ -}} | ||||
| 												{{- if eq $issue.When.Year $.model.Year -}} | ||||
| 													{{- if or (gt $groupIndex 0) (gt $issueIndex 0) }}, {{ end -}} | ||||
| 													<span class="text-blue-600 hover:text-blue-700 underline decoration-dotted hover:decoration-solid [&>a]:text-blue-600 [&>a:hover]:text-blue-700">{{- template "_citation" $issue -}}</span> | ||||
| 												{{- end -}} | ||||
| 											{{- end -}} | ||||
| 								{{- /* Show all citations from all pieces in this group inline with commas */ -}} | ||||
| 								{{ " " }}{{- range $groupIndex, $groupItem := $groupedItems -}} | ||||
| 									{{- range $issueIndex, $issue := $groupItem.IssueRefs -}} | ||||
| 										{{- /* Only show citations for the current year */ -}} | ||||
| 										{{- if eq $issue.When.Year $.model.Year -}} | ||||
| 											{{- if or (gt $groupIndex 0) (gt $issueIndex 0) }}, {{ end -}} | ||||
| 											<span class="text-blue-600 hover:text-blue-700 underline decoration-dotted hover:decoration-solid [&>a]:text-blue-600 [&>a:hover]:text-blue-700">{{- template "_citation" $issue -}}</span> | ||||
| 										{{- end -}} | ||||
| 									{{- end -}} | ||||
| 								{{- end -}} | ||||
|  | ||||
| 										{{- /* Add "Ganzer Beitrag" link if piece spans multiple issues */ -}} | ||||
| 										{{- $firstGroupItem := index $groupedItems 0 -}} | ||||
| 										{{- if gt (len $firstGroupItem.IssueRefs) 1 -}} | ||||
| 											{{ " " }}<div class="inline-flex items-center gap-1 px-2 py-1 bg-blue-50 | ||||
| 											hover:bg-blue-100 text-blue-700 hover:text-blue-800 border border-blue-200 | ||||
| 											hover:border-blue-300 rounded text-xs font-medium transition-colors duration-200"> | ||||
| 												<i class="ri-file-copy-2-line text-xs"></i> | ||||
| 												<a href="{{ GetPieceURL $firstGroupItem.ID }}" class=""> | ||||
| 													Ganzer Beitrag | ||||
| 												</a> | ||||
| 											</div> | ||||
| 										{{- end }} | ||||
| 								{{- /* Add "Ganzer Beitrag" link if piece spans multiple issues */ -}} | ||||
| 								{{- $firstGroupItem := index $groupedItems 0 -}} | ||||
| 								{{- if gt (len $firstGroupItem.IssueRefs) 1 -}} | ||||
| 									{{ " " }}<div class="inline-flex items-center gap-1 px-2 py-1 bg-blue-50 | ||||
| 									hover:bg-blue-100 text-blue-700 hover:text-blue-800 border border-blue-200 | ||||
| 									hover:border-blue-300 rounded text-xs font-medium transition-colors duration-200"> | ||||
| 										<i class="ri-file-copy-2-line text-xs"></i> | ||||
| 										<a href="{{ GetPieceURL $firstGroupItem.ID }}" class=""> | ||||
| 											Ganzer Beitrag | ||||
| 										</a> | ||||
| 									</div> | ||||
| 								</div> | ||||
| 							{{- end -}} | ||||
| 								{{- end }} | ||||
| 							</div> | ||||
| 						</div> | ||||
| 					</div> | ||||
| 					{{- end -}} | ||||
| 				</div> | ||||
| 			{{- else -}} | ||||
| 			<div class="bg-slate-50 rounded-lg p-8 text-center"> | ||||
|   | ||||
| @@ -1,8 +1,24 @@ | ||||
| <!-- Single Place Detail View --> | ||||
| <div class="max-w-7xl mx-auto px-8 py-8"> | ||||
| 	<div class="bg-white px-6 py-6 rounded w-full lg:min-w-[800px] xl:min-w-[900px]"> | ||||
| 		{{ template "_back_navigation" . }} | ||||
| 		{{ template "_place_header" .model.SelectedPlace }} | ||||
| 		{{ template "_place_pieces" .model.SelectedPlace }} | ||||
| <div class="grid grid-cols-1 lg:grid-cols-7 gap-8"> | ||||
| 	{{- /* Main content - Place details */ -}} | ||||
| 	<div class="lg:col-span-5 pt-4"> | ||||
| 		<div class="bg-white px-6 py-6 rounded w-full"> | ||||
| 			{{ template "_back_navigation" . }} | ||||
| 			{{ template "_place_header" .model.SelectedPlace }} | ||||
| 			{{ template "_place_pieces" .model.SelectedPlace }} | ||||
| 		</div> | ||||
| 	</div> | ||||
|  | ||||
| 	{{- /* Sidebar - Map */ -}} | ||||
| 	<div class="lg:col-span-2 sticky top-0 self-start"> | ||||
| 		<div class="bg-white rounded"> | ||||
| 			{{ if .model.SelectedPlace.Place.Geo }} | ||||
| 				{{ $geonames := GetGeonames .model.SelectedPlace.Place.Geo }} | ||||
| 				{{ if and $geonames $geonames.Lat $geonames.Lng }} | ||||
| 					{{ $placeJSON := printf `{"id":"%s","name":"%s","toponymName":"%s","lat":"%s","lng":"%s"}` .model.SelectedPlace.Place.ID (index .model.SelectedPlace.Place.Names 0) $geonames.Name $geonames.Lat $geonames.Lng }} | ||||
| 					<places-map-single data-place="{{ $placeJSON }}" class="w-full"></places-map-single> | ||||
| 				{{ end }} | ||||
| 			{{ end }} | ||||
| 		</div> | ||||
| 	</div> | ||||
| </div> | ||||
		Reference in New Issue
	
	Block a user
	 Simon Martens
					Simon Martens