Infrastructure — Chasse de Saint-Nabord
Prototype — focus sur Droits
Miradors
L'agrainage
Pierres à sel
Caméras
Droits
2 miradors
Mirador Forêt Nord
Poste fixe
Vue dégagée sur la prairie. Idéal chevreuil et sanglier en soirée.
48.231456, 6.823457
Mirador Ruisseau
Poste mobile
28.03.2026 17h00-21h00 — Lukacic Z.
1 point d'agrainage
Agrainage Clairière
1 pierre à sel
Pierre à sel Lisière Est
1 caméra
Caméra Sentier Principal
Miradors : visibles et réservables par tous les membres — aucune restriction.
Recherchez un membre pour définir ses accès aux autres catégories.
Recherchez un membre pour définir ses accès aux autres catégories.
Rechercher un membre :
Saisissez un nom, prénom ou date de naissance
pour trouver un membre et gérer ses droits.
pour trouver un membre et gérer ses droits.
Aucun membre trouvé — vérifiez l'orthographe.
';
CATS.forEach(function(cat){
var pv = u.perms[cat.id].v;
var pe = u.perms[cat.id].e;
html += '
';
html += '';
card.innerHTML = html;
resList.appendChild(card);
});
}
function syncChk(cb){
var uid = cb.getAttribute('data-uid');
var cat = cb.getAttribute('data-cat');
var key = cb.getAttribute('data-key');
// Modifier checked → force Voir checked
if(key==='e' && cb.checked){
var vCb = document.querySelector('input[data-uid="'+uid+'"][data-cat="'+cat+'"][data-key="v"]');
if(vCb) vCb.checked = true;
}
// Voir unchecked → force Modifier unchecked
if(key==='v' && !cb.checked){
var eCb = document.querySelector('input[data-uid="'+uid+'"][data-cat="'+cat+'"][data-key="e"]');
if(eCb) eCb.checked = false;
}
}
function saveUser(idx, btn){
CATS.forEach(function(cat){
var vCb = document.querySelector('input[data-uid="'+idx+'"][data-cat="'+cat.id+'"][data-key="v"]');
var eCb = document.querySelector('input[data-uid="'+idx+'"][data-cat="'+cat.id+'"][data-key="e"]');
if(vCb) USERS[idx].perms[cat.id].v = vCb.checked;
if(eCb) USERS[idx].perms[cat.id].e = eCb.checked;
});
var orig = btn.innerHTML;
btn.innerHTML = ' Sauvegarde!';
btn.style.background = '#1e7e34';
setTimeout(function(){ btn.innerHTML = orig; btn.style.background = '#27ae60'; }, 2000);
flashMsg('Droits de ' + USERS[idx].pre + ' ' + USERS[idx].nom + ' sauvegardés!', 'ok');
}
function openAdd(type, name){
document.getElementById('add-title').textContent = (name?'Modifier — ':'Ajouter — ') + (LABS[type]||type);
document.getElementById('add-nom').value = name||'';
document.getElementById('rv-sect').style.display = (type==='mir') ? 'block' : 'none';
['p1','p2'].forEach(function(p){
var img = document.getElementById(p+'img');
img.style.display='none'; img.src='';
document.getElementById(p+'ph').style.display='flex';
document.getElementById(p+'del').style.display='none';
document.getElementById(p+'f').value='';
});
document.getElementById('m-add').style.display='block';
}
function closeM(id){ document.getElementById(id).style.display='none'; }
function prevPh(inp,imgId,phId,delId){
var f=inp.files[0]; if(!f) return;
var r=new FileReader();
r.onload=function(e){
var img=document.getElementById(imgId);
img.src=e.target.result; img.style.display='block';
document.getElementById(phId).style.display='none';
document.getElementById(delId).style.display='block';
};
r.readAsDataURL(f);
}
function delPh(imgId,phId,delId,inpId){
var img=document.getElementById(imgId);
img.style.display='none'; img.src='';
document.getElementById(phId).style.display='flex';
document.getElementById(delId).style.display='none';
document.getElementById(inpId).value='';
}
function openReserv(){
document.getElementById('rv-err').style.display='none';
document.getElementById('nrv-d').value='';
document.getElementById('m-rv').style.display='block';
}
function confirmRv(){
var d=document.getElementById('nrv-d').value;
var f=document.getElementById('nrv-f').value;
var t=document.getElementById('nrv-t').value;
if(!d||!f||!t){flashMsg('Veuillez remplir tous les champs.','err');return;}
if(d==='2026-03-28' && !(t<='17:00'||f>='21:00')){
document.getElementById('rv-err').style.display='block'; return;
}
closeM('m-rv');
flashMsg('Réservation confirmée : '+d+' de '+f+' à '+t,'ok');
}
function flashMsg(txt,type){
var el=document.getElementById('msg');
el.textContent=txt;
el.className='msg '+(type||'ok');
el.style.display='block';
setTimeout(function(){el.style.display='none';},3500);
}
// Enter key on date
document.getElementById('s-dob').addEventListener('keydown',function(e){if(e.key==='Enter')doSearch();});
';
html += '';
html += '
';
});
html += '';
html += '';
html += '';
html += '