handle next/prev image in an album

This commit is contained in:
Nick Pegg 2024-08-04 08:25:16 -07:00
parent 085c1dee88
commit ac08b1fc84
4 changed files with 81 additions and 9 deletions

View file

@ -169,7 +169,7 @@ def generate_html(config: Config, root_dir: ImageDirectory) -> None:
) )
) )
for image_path in album_dir.images: for pos, image_path in enumerate(album_dir.images):
# TODO: If a file with a matching name but .txt or .md, add that as the # TODO: If a file with a matching name but .txt or .md, add that as the
# description for the image # description for the image
html_path = image_path.html_path() html_path = image_path.html_path()
@ -178,12 +178,21 @@ def generate_html(config: Config, root_dir: ImageDirectory) -> None:
) / "static" ) / "static"
html_path.parent.mkdir(exist_ok=True) html_path.parent.mkdir(exist_ok=True)
prev_image = None
next_image = None
if pos != 0:
prev_image = album_dir.images[pos-1]
if pos < len(album_dir.images) - 1:
next_image = album_dir.images[pos+1]
logger.debug(f"Rendering {html_path}") logger.debug(f"Rendering {html_path}")
with html_path.open("w") as f: with html_path.open("w") as f:
f.write( f.write(
photo_tmpl.render( photo_tmpl.render(
static_dir=static_path, static_dir=static_path,
image_path=image_path, image_path=image_path,
prev_image=prev_image,
next_image=next_image,
) )
) )

View file

@ -3,21 +3,23 @@
{% block content %} {% block content %}
{% if not album_dir.is_root %} {% if not album_dir.is_root %}
<p> <p>
<a href="..">up</a> <a href="..">
<i class="arrow arrow-up"></i>
</a>
</p> </p>
{% endif %} {% endif %}
{% if album_dir.children %} {% if album_dir.children %}
<h1>Albums</h1> <h1>Albums</h1>
<div id="album-children"> <ul id="album-children">
{% for child in album_dir.children %} {% for child in album_dir.children %}
<div class="album"> <li class="album">
<a href="{{child.path.name}}/"> <a href="{{child.path.name}}/">
{{child.path.name}} {{child.path.name}}
</a> </a>
</div> </li>
{% endfor %} {% endfor %}
</div> </ul>
{% endif %} {% endif %}
{% if album_dir.images %} {% if album_dir.images %}

View file

@ -2,9 +2,25 @@
{% block content %} {% block content %}
<div id="nav"> <div id="nav">
prev <div>
<a href="..">up</a> {% if prev_image %}
next <a href="{{prev_image.html_filename()}}">
<i class="arrow arrow-left"></i>
</a>
{% endif %}
</div>
<div>
<a href="..">
<i class="arrow arrow-up"></i>
</a>
</div>
<div>
{% if next_image %}
<a href="{{next_image.html_filename()}}">
<i class="arrow arrow-right"></i>
</a>
{% endif %}
</div>
</div> </div>
<div id="photo"> <div id="photo">

View file

@ -4,6 +4,18 @@ body {
#content { #content {
width: 1500px; width: 1500px;
text-align: center; text-align: center;
margin-left: auto;
margin-right: auto;
}
#content > * {
width: fit-content;
margin-left: auto;
margin-right: auto;
}
ul {
padding-left: 1.5em;
} }
#album-photos { #album-photos {
@ -17,3 +29,36 @@ body {
display: flex; display: flex;
align-items: center; align-items: center;
} }
#nav {
width: 150px;
margin: auto;
display: flex;
padding: 0.5em;
}
#nav div {
width: 50px;
}
.arrow {
border: solid black;
border-width: 0 3px 3px 0;
display: inline-block;
padding: 3px;
}
.arrow-right {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
}
.arrow-left {
transform: rotate(135deg);
-webkit-transform: rotate(135deg);
}
.arrow-up {
transform: rotate(-135deg);
-webkit-transform: rotate(-135deg);
}