Finish up photostream grid and single layouts

This commit is contained in:
Eryn Wells 2024-10-17 08:34:18 -07:00
parent 1bf8c28f23
commit a74703beb5
7 changed files with 355 additions and 0 deletions

View file

@ -0,0 +1,64 @@
<div class="photo-params">
<table>
{{ if and .Tags.Make .Tags.Model }}
<thead>
<td class="make-model" colspan=4>
{{- $make := .Tags.Make -}}
{{- $model := .Tags.Model -}}
{{- if in $model $make -}}
{{ .Tags.Model }}
{{- else -}}
{{ .Tags.Make }} {{ .Tags.Model }}
{{- end -}}
</td>
</thead>
{{ end }}
{{ with .Tags.LensModel }}
<tr>
<td colspan=4 class="lens">{{ . }}</td>
</tr>
{{ end }}
<tr>
{{- $hasLocation := and .Lat .Long -}}
{{ if $hasLocation -}}
<td colspan=2 class="location">
{{ $lat := float .Lat }}{{ $latDir := cond (eq $lat 0) "" (cond (gt $lat 0) "N" "S") }}
<data class="latitude" value="{{ $lat }}">{{ .Lat | lang.FormatNumber (cond (ne $lat 0) 3 0) }}º{{ $latDir }}</data>,
{{ $long := float .Long }}{{ $longDir := cond (eq $long 0) "" (cond (gt $long 0) "E" "W") }}
<data class="longitude" value="{{ $long }}">{{ .Long | lang.FormatNumber (cond (ne $long 0) 3 0) }}º{{ $longDir }}</data>
</td>
{{- end -}}
{{ if and .Tags.PixelXDimension .Tags.PixelYDimension -}}
<td colspan={{ if $hasLocation }}2{{ else }}4{{ end }} class="size">
{{- $widthpx := .Tags.PixelXDimension -}}
{{- $heightpx := .Tags.PixelYDimension -}}
{{- if and (gt $widthpx 0) (gt $heightpx 0) -}}
{{- $megapixels := div (mul $widthpx $heightpx) 1e6 -}}
<data class="megapixels nobreak" value="{{ $megapixels }}">{{ $megapixels | lang.FormatNumber 0 }} MP</data>
<span class="nobreak"><data class="width">{{ $widthpx }}</data> × <data class="height">{{ $heightpx }}</data></span>
{{- end -}}
</td>
{{ end }}
</tr>
{{ if or .Tags.ISOSpeedRatings .Tags.FocalLengthIn35mmFilm .Tags.FNumber .Tags.ExposureTime }}
<tr class="exposure-attributes">
<td class="iso">{{ with .Tags.ISOSpeedRatings }}ISO {{ . }}{{ end }}</td>
<td class="focal-length">
{{- $focalLength := .Tags.FocalLengthIn35mmFilm | default .Tags.FocalLength -}}
{{- with $focalLength -}}{{ . }} mm{{- end -}}
</td>
<td class="f-number">{{ with .Tags.FNumber }}{{ printf "ƒ%0.1f" . }}{{ end }}</td>
<td class="exposure-time">
{{- with $exposureTime := .Tags.ExposureTime -}}
{{- if in $exposureTime "/" -}}
{{ . }} s
{{- else -}}
1/{{ printf "%.0f" (div 1.0 (float $exposureTime)) }} s
{{- end -}}
{{- end -}}
</td>
</tr>
{{ end }}
</table>
</div>

View file

@ -0,0 +1,9 @@
{{ $thumbnailResourcesNames := slice "thumbnail" "Thumbnail" "thumbnail.jpg" "Thumbnail.jpg" }}
{{ with index .Params "thumbnail" }}
{{ $thumbnailResourcesNames = $thumbnailResourcesNames | append . }}
{{ end }}
{{ $imageResources := .Resources.ByType "image" }}
{{ $photos := where $imageResources "Name" "not in" $thumbnailResourcesNames }}
{{ return $photos }}

View file

@ -0,0 +1,50 @@
{{/*
Renders a photo thumbnail. If neither a target height or target width are
given, and the image is already in the correct orientation, no image
processing is performed.
Arguments
---------
"Page" : A reference to the current Page
"Height" : The target height of the image
"Width" : The target width of the image
Returns
-------
The processed thumbnail image resource
*/}}
{{- $thumbnailResource := .Page.Resources.GetMatch
(index .Page.Params "thumbnail" | default "[tT]humbnail*")
| default (index (.Page.Resources.ByType "image") 0) -}}
{{- if not $thumbnailResource -}}
{{- errorf "No thumbnail available for %s" .Page.Permalink }}
{{- end -}}
{{ $orientation := partial "image-utilities/orientation-angle.html" $thumbnailResource }}
{{ $targetWidth := 0 }}
{{ with .Width }}
{{ $targetWidth = . }}
{{ else }}
{{ $targetWidth = $thumbnailResource.Width }}
{{ end }}
{{ $targetHeight := 0 }}
{{ with .Height }}
{{ $targetHeight = . }}
{{ else }}
{{ $targetHeight = $thumbnailResource.Height }}
{{ end }}
{{ $thumbnail := false }}
{{ if not (and (eq $orientation 0)
(eq $targetWidth $thumbnailResource.Width)
(eq $targetHeight $thumbnailResource.Height)) }}
{{ $thumbnail = $thumbnailResource.Fit (printf "%dx%d r%d" $targetWidth $targetHeight (sub 360 $orientation)) }}
{{ else }}
{{ $thumbnail = $thumbnailResource }}
{{ end }}
{{ return $thumbnail }}