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 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 09:03:26 +02:00
parent f49d5511ef
commit e730b6bc8b
4 changed files with 16 additions and 16 deletions

View File

@@ -298,11 +298,6 @@ async def api_config_update(modifications: dict):
@app.post("/api/capturer") @app.post("/api/capturer")
async def api_capturer(): async def api_capturer():
global capture_en_cours, _preview_actif 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 capture_en_cours = True
_preview_actif = False # Eviter faux camera_erreur (race condition HTTP avant preview_stop) _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") log.info("Capture déclenchée — preview figé, thread en attente de lock")

View File

@@ -1356,13 +1356,12 @@ h3 {
} }
.cadre-choix-item .cadre-thumb-wrap img { .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; position: absolute;
width: 350px; width: 350px;
height: 525px; height: 525px;
top: 50%; top: 0;
left: 50%; left: 0;
transform: translate(-50%, -50%);
border-radius: 0; border-radius: 0;
display: block; display: block;
} }
@@ -1411,9 +1410,8 @@ h3 {
.grille-cadres-popup .cadre-choix-item .cadre-thumb-wrap img { .grille-cadres-popup .cadre-choix-item .cadre-thumb-wrap img {
width: 250%; width: 250%;
height: 250%; height: 250%;
top: 50%; top: 0;
left: 50%; left: 0;
transform: translate(-50%, -50%);
} }
.grille-cadres-popup .cadre-choix-aucun .cadre-choix-vide { .grille-cadres-popup .cadre-choix-aucun .cadre-choix-vide {

View File

@@ -110,6 +110,8 @@ function allerA(ecran) {
majCompteurAccueil(); majCompteurAccueil();
} else if (ecran === 'capture') { } else if (ecran === 'capture') {
lancerCapture(); lancerCapture();
} else if (ecran === 'partage') {
majBoutonImprimerCompteur();
} else if (ecran === 'galerie') { } else if (ecran === 'galerie') {
chargerGalerie(); chargerGalerie();
} else if (ecran === 'admin') { } else if (ecran === 'admin') {

View File

@@ -221,10 +221,6 @@ async function lancerCapture() {
if (!resultat) { if (!resultat) {
erreurReseau = true; erreurReseau = true;
} else if (resultat.erreur === 'Limite de photos atteinte') {
captureEnCours = false;
afficherErreurCapture('Limite de photos atteinte', 'La session est terminee');
return;
} }
if (erreurReseau) { 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) { function pause(ms) {
return new Promise(resolve => setTimeout(resolve, ms)); return new Promise(resolve => setTimeout(resolve, ms));
} }