[main] Imagesizes in slider
All checks were successful
Build, Push, and Deploy to Nomad / docker-nomad (push) Successful in 53s

This commit is contained in:
2024-12-29 18:12:24 +01:00
parent e5960232f1
commit 10de61cb25
13 changed files with 29 additions and 15 deletions

View File

@@ -7,9 +7,10 @@ from PIL import Image
class FileHandler: class FileHandler:
def __init__(self, category, image_type, filename): def __init__(self, category=None, image_type=None, filename=None):
self.filename = filename self.filename = filename
self.category = category self.category = category
self.image_type = image_type self.image_type = image_type
@property @property
@@ -44,6 +45,20 @@ class FileHandler:
f")" f")"
) )
def get_category(self, file_path):
# List all categories in the data directory
categories = [
name for name in os.listdir( "data/" )
if os.path.isdir( os.path.join( "data/", name ) )
]
# Search for the category in the file path
for category in categories:
if f"/{category}/" in file_path or f"\\{category}\\" in file_path:
return category
# Return None if no category matches
return None
class ImageService: class ImageService:
@@ -139,14 +154,10 @@ class ImageService:
default_size = self.get_image_size( image_type) default_size = self.get_image_size( image_type)
width = width or default_size.get( "width" ) width = width or default_size.get( "width" )
height = height or default_size.get( "height" ) height = height or default_size.get( "height" )
#file_path = self._resolve_path( category, image_type, filename )
file_path = FileHandler(category = category,image_type = image_type,filename = filename) file_path = FileHandler(category = category,image_type = image_type,filename = filename)
self.validate_image( file_path, width = width,height=height, overwrite = True ) self.validate_image( file_path, width = width,height=height, overwrite = True )
tag = f'<img src="{file_path.dest_filename}" alt="{alt}"' tag = f'<img src="/{file_path.dest_filename}" alt="{alt}"'
if width: if width:
tag += f' width="{width}"' tag += f' width="{width}"'
if height: if height:

View File

@@ -4,7 +4,8 @@ import markdown
from fastapi import FastAPI from fastapi import FastAPI
from jinja2 import Environment, DictLoader from jinja2 import Environment, DictLoader
from markupsafe import Markup from markupsafe import Markup
from .image_service import ImageService from .image_service import ImageService, FileHandler
class MarkdownRenderer: class MarkdownRenderer:
def __init__(self, file_path: str = None, app: FastAPI=None): def __init__(self, file_path: str = None, app: FastAPI=None):
@@ -88,18 +89,21 @@ class MarkdownRenderer:
html_content.append('<div class="button-stack">') html_content.append('<div class="button-stack">')
for i, val in enumerate(images): for i, val in enumerate(images):
self.image_service = ImageService( self.app ) self.image_service = ImageService( self.app )
print(val)
modal_id_current = f"{modal_id}_{i}" modal_id_current = f"{modal_id}_{i}"
modal_id_next = f"{modal_id}_{i + 1}" if i + 1 < len(images) else f"{modal_id}_0" modal_id_next = f"{modal_id}_{i + 1}" if i + 1 < len(images) else f"{modal_id}_0"
category = FileHandler().get_category(self.file_path)
thumbnal_img = self.image_service.image_tag(category = category, image_type = "thumbnails",filename = val,alt="A better description later on")
modal_img = self.image_service.image_tag(category = category, image_type = "large",filename = val,alt="A better description later on")
html_content.append(f""" html_content.append(f"""
<button onclick="openModal('modal{modal_id_current}')" class="stacked-button"> <button onclick="openModal('modal{modal_id_current}')" class="stacked-button">
<img src="{val}" alt="Image {i}" class="thumbnail" loading="lazy"> {thumbnal_img}
</button> </button>
<div class="modal" id="modal{modal_id_current}"> <div class="modal" id="modal{modal_id_current}">
<div class="modal-content"> <div class="modal-content">
<h2>Modal {i}</h2> <h2>Modal {i}</h2>
<img src="{val}" alt="Image {i}" loading="lazy"> {modal_img}
<div class="modal-buttons"> <div class="modal-buttons">
<button onclick="closeModal('modal{modal_id_current}')">Close</button> <button onclick="closeModal('modal{modal_id_current}')">Close</button>
@@ -136,9 +140,8 @@ class MarkdownRenderer:
width=width, width=width,
height=height height=height
) )
my_tag = Markup(tag) return Markup(tag)
print(my_tag)
return my_tag

View File

@@ -30,7 +30,7 @@ Ligesom i København, hvor du finder både små biografer som Grand Teatret og s
{{ slider(options={"width": 500, "height": 500}, images=["158177.jpg", "158170.jpg", "Fachada_SaoJorge.jpg"]) }} {{ slider(options={"width": 500, "height": 500}, images=["158170.jpg", "Fachada_SaoJorge.jpg"]) }}
Biografbesøg i Lissabon er en afslappet måde at tilbringe tid med familien. Jeg nyder selv at tage afsted med Erika for at dele både film og hygge. Biografbesøg i Lissabon er en afslappet måde at tilbringe tid med familien. Jeg nyder selv at tage afsted med Erika for at dele både film og hygge.
@@ -73,4 +73,4 @@ Samtidig er mange oplevelser billigere end i København, og her er en atmosfære
### Lidt billeder ### Lidt billeder
{{ slider(options={"width": 500, "height": 500}, images=["158170.jpg", "Fachada_SaoJorge.jpg", "pic34.jpg", "pic42.jpg", "pic72.jpg", "pic94.jpg"]) }} {{ slider(options={"width": 500, "height": 500}, images=["158170.jpg", "Fachada_SaoJorge.jpg"]) }}

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB