Flash Canon configurable, choix de cadre a l'impression, fixes capture/reconnexion DSLR
- Flash integre Canon activable/desactivable depuis l'admin (configurer_flash) - Popup de choix de cadre juste avant impression, layout sans defilement (flex nowrap + aspect-ratio) - Capture : ignore camera_erreur pendant une capture en cours (laisse l'API trancher) - surveiller_dslr : grace period preview augmentee a 2s, reapplique la config camera apres reconnexion - start.sh simplifie (Chromium gere par kiosk-session.sh), remote debugging port 9222 active
This commit is contained in:
@@ -3,15 +3,66 @@
|
||||
let nbExemplaires = 1;
|
||||
let copiesMax = 5;
|
||||
|
||||
function ouvrirImpression() {
|
||||
async function ouvrirImpression() {
|
||||
copiesMax = config.impression?.copies_max || 5;
|
||||
nbExemplaires = 1;
|
||||
document.getElementById('nb-exemplaires').textContent = nbExemplaires;
|
||||
document.getElementById('form-impression').classList.remove('cache');
|
||||
cadreChoisi = null;
|
||||
|
||||
const hasCadres = await chargerCadresChoixImpression();
|
||||
if (hasCadres) {
|
||||
document.getElementById('popup-cadre-impression').classList.remove('cache');
|
||||
} else {
|
||||
document.getElementById('form-impression').classList.remove('cache');
|
||||
}
|
||||
}
|
||||
|
||||
function fermerImpression() {
|
||||
document.getElementById('form-impression').classList.add('cache');
|
||||
cadreChoisi = null;
|
||||
}
|
||||
|
||||
function confirmerCadreImpression() {
|
||||
document.getElementById('popup-cadre-impression').classList.add('cache');
|
||||
document.getElementById('form-impression').classList.remove('cache');
|
||||
}
|
||||
|
||||
function annulerCadreImpression() {
|
||||
document.getElementById('popup-cadre-impression').classList.add('cache');
|
||||
cadreChoisi = null;
|
||||
}
|
||||
|
||||
async function chargerCadresChoixImpression() {
|
||||
const fmt = (config.impression?.format || '15x20').replace('-2up', '');
|
||||
const data = await apiGet(`/api/cadres-impression/${fmt}`).catch(() => null);
|
||||
if (!data || data.disponibles.length === 0) return false;
|
||||
|
||||
const grille = document.getElementById('grille-cadres-impression');
|
||||
grille.innerHTML = '';
|
||||
|
||||
const divAucun = document.createElement('div');
|
||||
divAucun.className = 'cadre-choix-item cadre-choix-aucun cadre-selectionne';
|
||||
divAucun.innerHTML = '<div class="cadre-choix-vide"></div><span>Sans cadre</span>';
|
||||
divAucun.onclick = () => {
|
||||
cadreChoisi = null;
|
||||
grille.querySelectorAll('.cadre-choix-item').forEach(el => el.classList.remove('cadre-selectionne'));
|
||||
divAucun.classList.add('cadre-selectionne');
|
||||
};
|
||||
grille.appendChild(divAucun);
|
||||
|
||||
for (const nom of data.disponibles) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'cadre-choix-item';
|
||||
div.innerHTML = `<div class="cadre-thumb-wrap"><img src="/assets/cadres/${fmt}/${nom}" alt="${nom}"></div><span>${nom.replace('.png','')}</span>`;
|
||||
div.onclick = () => {
|
||||
cadreChoisi = nom;
|
||||
grille.querySelectorAll('.cadre-choix-item').forEach(el => el.classList.remove('cadre-selectionne'));
|
||||
div.classList.add('cadre-selectionne');
|
||||
};
|
||||
grille.appendChild(div);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function changerExemplaires(delta) {
|
||||
|
||||
Reference in New Issue
Block a user