From e730b6bc8bfe8c2c9c11a610f160fdca43b88329 Mon Sep 17 00:00:00 2001 From: Jules Date: Mon, 22 Jun 2026 09:03:26 +0200 Subject: [PATCH] Cadres : preview coin haut-gauche + compteur bloque impression pas capture - Thumbnails cadres : positionnement coin haut-gauche au lieu du centre (le centre du cadre PNG est transparent = invisible) - Compteur photos : ne bloque plus la capture quand limite atteinte, masque le bouton imprimer sur l'ecran partage a la place Co-Authored-By: Claude Opus 4.6 --- backend/main.py | 5 ----- frontend/css/style.css | 12 +++++------- frontend/js/app.js | 2 ++ frontend/js/camera.js | 13 +++++++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/backend/main.py b/backend/main.py index 5934878..d1597de 100644 --- a/backend/main.py +++ b/backend/main.py @@ -298,11 +298,6 @@ async def api_config_update(modifications: dict): @app.post("/api/capturer") async def api_capturer(): global capture_en_cours, _preview_actif - # Verifier le compteur - etat = compteur_restant() - if etat["actif"] and etat["restantes"] <= 0: - return JSONResponse({"erreur": "Limite de photos atteinte"}, status_code=403) - capture_en_cours = True _preview_actif = False # Eviter faux camera_erreur (race condition HTTP avant preview_stop) log.info("Capture déclenchée — preview figé, thread en attente de lock") diff --git a/frontend/css/style.css b/frontend/css/style.css index 5a899cc..6e4e4fd 100644 --- a/frontend/css/style.css +++ b/frontend/css/style.css @@ -1356,13 +1356,12 @@ h3 { } .cadre-choix-item .cadre-thumb-wrap img { - /* Image agrandie 2.5x et centrée — les bordures deviennent bien visibles */ + /* Image agrandie 2.5x, coin haut-gauche visible pour montrer la bordure du cadre */ position: absolute; width: 350px; height: 525px; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); + top: 0; + left: 0; border-radius: 0; display: block; } @@ -1411,9 +1410,8 @@ h3 { .grille-cadres-popup .cadre-choix-item .cadre-thumb-wrap img { width: 250%; height: 250%; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); + top: 0; + left: 0; } .grille-cadres-popup .cadre-choix-aucun .cadre-choix-vide { diff --git a/frontend/js/app.js b/frontend/js/app.js index 0e67cc5..4829608 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -110,6 +110,8 @@ function allerA(ecran) { majCompteurAccueil(); } else if (ecran === 'capture') { lancerCapture(); + } else if (ecran === 'partage') { + majBoutonImprimerCompteur(); } else if (ecran === 'galerie') { chargerGalerie(); } else if (ecran === 'admin') { diff --git a/frontend/js/camera.js b/frontend/js/camera.js index 90a3f2d..4133ee4 100644 --- a/frontend/js/camera.js +++ b/frontend/js/camera.js @@ -221,10 +221,6 @@ async function lancerCapture() { if (!resultat) { erreurReseau = true; - } else if (resultat.erreur === 'Limite de photos atteinte') { - captureEnCours = false; - afficherErreurCapture('Limite de photos atteinte', 'La session est terminee'); - return; } if (erreurReseau) { @@ -430,6 +426,15 @@ async function majCompteurAccueil() { } } +async function majBoutonImprimerCompteur() { + const etat = await apiGet('/api/compteur'); + const btn = document.getElementById('btn-imprimer'); + if (!btn) return; + if (etat.actif && etat.restantes <= 0) { + btn.classList.add('cache'); + } +} + function pause(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }