From 4e7a6b18d66a2dc4944cc52bd62916fe2f50cf26 Mon Sep 17 00:00:00 2001 From: marc Date: Mon, 5 Jan 2026 10:19:25 +0100 Subject: [PATCH] Afegir control visual de les lletres per a partitures --- folkugat_web/api/routes/tema/lyrics.py | 16 +++++++++++++++- folkugat_web/assets/static/css/main.css | 4 ++++ .../templates/fragments/tema/editor/lyric.html | 10 ++++++++++ .../assets/templates/fragments/tema/lyric.html | 5 ++++- .../assets/templates/lilypond/single_tune.ly | 2 +- folkugat_web/dal/sql/temes/lyrics.py | 14 +++++++++----- folkugat_web/model/lilypond/score.py | 7 +++++-- folkugat_web/model/temes.py | 1 + folkugat_web/services/temes/lyrics.py | 10 ++++++++-- scripts/08_add_lyrics_max_columns.py | 8 ++++++++ 10 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 scripts/08_add_lyrics_max_columns.py diff --git a/folkugat_web/api/routes/tema/lyrics.py b/folkugat_web/api/routes/tema/lyrics.py index 556cd5f..392eb17 100644 --- a/folkugat_web/api/routes/tema/lyrics.py +++ b/folkugat_web/api/routes/tema/lyrics.py @@ -33,11 +33,25 @@ def set_lyric( lyric_id: int, title: Annotated[str, Form()], content: Annotated[str, Form()], + max_columns: Annotated[str | None, Form()] = None, ): lyric = lyrics_service.get_lyric_by_id(lyric_id=lyric_id, tema_id=tema_id) if not lyric: raise HTTPException(status_code=404, detail="Could not find lyric!") - new_lyric = lyrics_service.update_lyric(lyric=lyric, title=title, content=content) + + # Parse max_columns from string to int if provided + max_columns_int = None + if max_columns is not None and max_columns.strip(): + try: + max_columns_int = int(max_columns.strip()) + except ValueError: + raise HTTPException(status_code=400, detail="max_columns must be a valid integer") + + try: + new_lyric = lyrics_service.update_lyric(lyric=lyric, title=title, content=content, max_columns=max_columns_int) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + return lyrics_fragments.lyric(request=request, logged_in=logged_in, lyric=new_lyric) diff --git a/folkugat_web/assets/static/css/main.css b/folkugat_web/assets/static/css/main.css index c96d85a..65cddec 100644 --- a/folkugat_web/assets/static/css/main.css +++ b/folkugat_web/assets/static/css/main.css @@ -737,6 +737,10 @@ video { width: 50%; } +.w-16 { + width: 4rem; +} + .w-full { width: 100%; } diff --git a/folkugat_web/assets/templates/fragments/tema/editor/lyric.html b/folkugat_web/assets/templates/fragments/tema/editor/lyric.html index c754056..5e6d9e4 100644 --- a/folkugat_web/assets/templates/fragments/tema/editor/lyric.html +++ b/folkugat_web/assets/templates/fragments/tema/editor/lyric.html @@ -7,6 +7,16 @@ rounded bg-brown px-2 " /> +