Cadre impose visible en overlay sur live + preview + partage
- Overlay cadre sur les 3 ecrans : live (capture), preview (filtres), partage - chargerCadreImpose() au debut de chaque capture : affiche le cadre event - Photos sauvegardees sans cadre, cadre applique uniquement a l'impression - afficherCadreOverlay cherche d'abord dans les cadres evenement Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -185,6 +185,7 @@ async function lancerCapture() {
|
||||
document.getElementById('photo-resultat').src = '';
|
||||
document.getElementById('photo-partage').src = '';
|
||||
|
||||
await chargerCadreImpose();
|
||||
majCompteurAccueil();
|
||||
|
||||
// Verifier l'etat de la camera avant de commencer
|
||||
@@ -435,6 +436,21 @@ async function majBoutonImprimerCompteur() {
|
||||
}
|
||||
}
|
||||
|
||||
async function chargerCadreImpose() {
|
||||
const fmt = (config.impression?.format || '15x20').replace('-2up', '');
|
||||
const data = await apiGet(`/api/cadres-impression/${fmt}`).catch(() => null);
|
||||
if (!data) { afficherCadreOverlay(null); return; }
|
||||
if (data.event_mode === 'impose' && data.event_cadre) {
|
||||
cadreChoisi = data.event_cadre;
|
||||
afficherCadreOverlay(cadreChoisi);
|
||||
} else if (data.event_mode === 'defaut' && data.event_cadre) {
|
||||
cadreChoisi = data.event_cadre;
|
||||
afficherCadreOverlay(cadreChoisi);
|
||||
} else {
|
||||
afficherCadreOverlay(null);
|
||||
}
|
||||
}
|
||||
|
||||
function pause(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
28
frontend/js/effects.js
vendored
28
frontend/js/effects.js
vendored
@@ -78,17 +78,33 @@ async function appliquerFiltreStrip(filtre) {
|
||||
}
|
||||
|
||||
function afficherCadreOverlay(nom) {
|
||||
const el = document.getElementById('cadre-overlay-preview');
|
||||
if (!el) return;
|
||||
const ids = ['cadre-overlay-preview', 'cadre-overlay-live', 'cadre-overlay-partage'];
|
||||
if (!nom) {
|
||||
el.classList.add('cache');
|
||||
el.src = '';
|
||||
ids.forEach(id => {
|
||||
const el = document.getElementById(id);
|
||||
if (el) { el.classList.add('cache'); el.src = ''; }
|
||||
});
|
||||
return;
|
||||
}
|
||||
const config_imp = config.impression || {};
|
||||
const fmt = (config_imp.format || '15x20').replace('-2up', '');
|
||||
el.src = `/assets/cadres/${fmt}/${nom}`;
|
||||
el.classList.remove('cache');
|
||||
const event_id = (config.evenement || {}).event_id;
|
||||
let src = `/assets/cadres/${fmt}/${nom}`;
|
||||
if (event_id) {
|
||||
const eventSrc = `/data/evenements/${event_id}/cadres/${fmt}/${nom}`;
|
||||
src = eventSrc;
|
||||
}
|
||||
ids.forEach(id => {
|
||||
const el = document.getElementById(id);
|
||||
if (el) {
|
||||
el.src = src;
|
||||
el.onerror = () => {
|
||||
el.src = `/assets/cadres/${fmt}/${nom}`;
|
||||
el.onerror = null;
|
||||
};
|
||||
el.classList.remove('cache');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
async function chargerOverlays() {
|
||||
|
||||
Reference in New Issue
Block a user