Mon parcours0

LES ATELIERS DE MOBILITÉ SOUTENABLE

Trouver une formation.

Une question, un public, un atelier. Le « + » conserve la formation dans votre carnet de projet.

Un groupe réuni dans la serre de l’Äerdschëff
Observer, échanger et apprendre à l’Äerdschëff.
Par où commencer ?
Explorer tous les ateliers
Conserver ou reprendre mon projet

Photographies issues des supports pédagogiques et des workshops Äerdschëff. Les photos de workshops illustrent la démarche, pas nécessairement la séance proposée.

`;} load();setMotion();renderResults();renderSelection();if(restoredBrief&&$('composer'))makeProposal(false); if($('filter-shell')&&window.matchMedia('(max-width:620px)').matches)$('filter-shell').open=false; $('motion-toggle')?.addEventListener('click',()=>{motionOff=!motionOff;setMotion();save();}); if(reduce.addEventListener)reduce.addEventListener('change',setMotion); document.addEventListener('visibilitychange',()=>{document.body.classList.toggle('is-backgrounded',document.hidden);if(document.hidden){liveAnimations.forEach(a=>a.cancel());save();}}); addEventListener('pagehide',save); document.addEventListener('click',e=>{ const a=e.target.closest('a[href]');if(!a)return; const u=new URL(a.href,location.href);if(u.pathname===location.pathname&&u.hash){const target=document.getElementById(u.hash.slice(1));if(target?.closest('details'))target.closest('details').open=true;}if(u.origin===location.origin&&u.pathname!==location.pathname&&selection.length&&save()===false){e.preventDefault();announce('La sauvegarde est indisponible. Emportez votre projet modifiable avant de changer de page.');} }); if(location.hash){const target=document.getElementById(location.hash.slice(1));if(target?.closest('details'))target.closest('details').open=true;} if('IntersectionObserver' in window){ if($('hero-collage'))new IntersectionObserver(entries=>entries.forEach(e=>e.target.classList.toggle('in-view',e.isIntersecting)),{threshold:.05}).observe($('hero-collage')); if($('composer'))new IntersectionObserver(entries=>entries.forEach(e=>$('selection-dock').classList.toggle('in-composer',e.isIntersecting)),{rootMargin:'-10% 0px -10% 0px'}).observe($('composer')); const drawObserver=new IntersectionObserver(entries=>entries.forEach(e=>{if(e.isIntersecting){e.target.classList.add('drawn');drawObserver.unobserve(e.target);}}),{threshold:.1}); all('.draw').forEach(p=>{if(motion())p.classList.add('waiting');drawObserver.observe(p);}); } if($('hero-collage')&&window.matchMedia('(hover:hover) and (pointer:fine)').matches){let pf=0;const collage=$('hero-collage'),target=document.querySelector('.binocular-wrap');collage.addEventListener('pointermove',e=>{if(!motion()||pf)return;pf=requestAnimationFrame(()=>{const r=collage.getBoundingClientRect();target.style.setProperty('--mx',((e.clientX-r.left-r.width/2)*.016)+'px');target.style.setProperty('--my',((e.clientY-r.top-r.height/2)*.016)+'px');pf=0;});});collage.addEventListener('pointerleave',()=>{target.style.setProperty('--mx','0px');target.style.setProperty('--my','0px');});} function scrollProgress(){if(scrollFrame)return;scrollFrame=requestAnimationFrame(()=>{const max=document.documentElement.scrollHeight-innerHeight;const amount=max>0?Math.min(1,Math.max(0,scrollY/max)):0;$('reading-progress').style.transform=`scaleX(${amount})`;scrollFrame=0;});} addEventListener('scroll',scrollProgress,{passive:true});addEventListener('resize',()=>{drawThread();scrollProgress();}); document.addEventListener('load',e=>{if(e.target?.tagName==='IMG'&&e.target.closest('#moodboard'))drawThread();},true); $('filters')?.addEventListener('submit',e=>{e.preventDefault();clearTimeout(searchTimer);filtersChanged();go($('catalogue-title'),true);}); $('filters')?.addEventListener('change',()=>{clearTimeout(searchTimer);filtersChanged();}); $('filters')?.addEventListener('reset',()=>{clearTimeout(searchTimer);activeIntent='';setTimeout(filtersChanged,0);}); $('query')?.addEventListener('input',()=>{clearTimeout(searchTimer);searchTimer=setTimeout(filtersChanged,180);}); $('show-more')?.addEventListener('click',()=>{resultPage++;renderResults();go($('catalogue-title'),true);}); $('previous-page')?.addEventListener('click',()=>{resultPage=Math.max(0,resultPage-1);renderResults();go($('catalogue-title'),true);}); all('[data-intent]').forEach(b=>b.addEventListener('click',()=>{activeIntent=b.dataset.intent;$('query').value='';$('theme').value=activeIntent;all('#filter-disciplines input').forEach(c=>c.checked=false);filtersChanged();go($('catalogue-title'),true);})); $('all-intents')?.addEventListener('click',()=>{$('filters').reset();}); $('budget')?.addEventListener('change',()=>{invalidate();renderSelection();}); $('visit-hours')?.addEventListener('change',()=>{invalidate();renderSelection();}); ['school','period'].forEach(id=>$(id)?.addEventListener('input',invalidate)); $('project-question')?.addEventListener('input',()=>{if(teamActive)$('team-question').value=$('project-question').value;invalidate();}); $('participants')?.addEventListener('input',()=>{invalidate();renderSelection();}); $('class-info')?.addEventListener('input',()=>{invalidate();renderSelection();}); ['teacher-count','team-hours','team-question','team-production'].forEach(id=>$(id)?.addEventListener('input',()=>{if(teamActive&&id==='team-question')$('project-question').value=$('team-question').value;invalidate();if(teamActive){$('team-refresh').hidden=false;renderSelection();}})); $('team-disciplines')?.addEventListener('change',()=>{invalidate();if(teamActive)renderSelection();}); $('team-form')?.addEventListener('submit',e=>{e.preventDefault();const t=teamValues();if(t.disciplines.length<2){$('team-status').textContent='Choisissez au moins deux disciplines à faire dialoguer.';all('#team-disciplines input')[0]?.focus();return;}if(!t.question){$('team-status').textContent='Écrivez votre question commune, même provisoire.';$('team-question').focus();return;} teamActive=true;$('project-question').value=t.question; const target=Math.max(Number($('team-hours').value),total());if(target<=480)$('budget').value=String(target);invalidate();renderSelection();$('team-refresh').hidden=true; $('team-status').textContent='Votre question est reprise dans le carnet. Les suggestions sont à examiner avant de les ajouter.'; if(budget()-total()>=120)showSuggestions();else{go($('composer-title'),true);say('compose-status','Votre carnet est conservé. Ajustez sa durée pour proposer des ateliers liés à la nouvelle question.');} }); $('suggest')?.addEventListener('click',showSuggestions); $('keep-suggestions')?.addEventListener('click',keepSuggestions); $('dismiss-suggestions')?.addEventListener('click',()=>{pendingSuggestions=[];$('suggestion-review').hidden=true;$('suggest').focus({preventScroll:true});}); $('build')?.addEventListener('click',()=>makeProposal()); $('clear-selection')?.addEventListener('click',()=>{selection=[];invalidate();renderSelection();announce('Le carnet est vide. Votre question de projet est conservée.');$('suggest').focus({preventScroll:true});}); document.addEventListener('click',e=>{ const add=e.target.closest('[data-add]'),remove=e.target.closest('[data-remove]'),detail=e.target.closest('[data-detail]'),up=e.target.closest('[data-up]'),down=e.target.closest('[data-down]'),ex=e.target.closest('[data-example]'),adjust=e.target.closest('[data-budget]'); if(add)toggle(Number(add.dataset.add),add);if(remove)toggle(Number(remove.dataset.remove),remove);if(detail)openDetail(Number(detail.dataset.detail),detail);if(ex)applyExample(ex.dataset.example); if(up||down){const id=Number(up?up.dataset.up:down.dataset.down),a=selection.indexOf(id),b=a+(up?-1:1);if(a>=0&&b>=0&&bgo($('composer-title'),true));else visitProject();} }); $('close-detail')?.addEventListener('click',()=>$('detail').close()); $('detail')?.addEventListener('close',()=>{document.body.classList.remove('modal-open');const next=detailOpener?.isConnected?detailOpener:document.querySelector(`[data-detail="${detailId}"]`);next?.focus({preventScroll:true});}); $('detail')?.addEventListener('click',e=>{if(e.target!==$('detail'))return;const r=$('detail').getBoundingClientRect();if(e.clientXr.right||e.clientYr.bottom)$('detail').close();}); $('download-text')?.addEventListener('click',()=>{if(proposal)download(new Blob([proposal.text],{type:'text/plain;charset=utf-8'}),'Mon-brief-Aerdscheff.txt');}); $('download-html')?.addEventListener('click',()=>{if(proposal)download(new Blob([briefHTML()],{type:'text/html;charset=utf-8'}),'Mon-brief-Aerdscheff.html');}); $('print')?.addEventListener('click',()=>{if(proposal)window.print();}); $('copy')?.addEventListener('click',async()=>{if(!proposal)return;try{if(navigator.clipboard&&window.isSecureContext){await navigator.clipboard.writeText(proposal.text);}else{const temp=document.createElement('textarea');temp.value=proposal.text;temp.style.position='fixed';temp.style.left='-9999px';document.body.append(temp);temp.select();const ok=document.execCommand('copy');temp.remove();if(!ok)throw new Error('Clipboard unavailable');}say('export-status','Le texte du brief a été copié.');}catch(_){say('export-status','La copie automatique n’est pas disponible ici. Utilisez la version texte ou le texte complet ci-dessous.');document.querySelector('.full-brief').open=true;}}); $('find-entry')?.addEventListener('click',e=>{e.preventDefault();$('filter-shell').open=true;go($('query'),true);}); $('download-draft')?.addEventListener('click',()=>{download(new Blob([JSON.stringify(snapshot(),null,2)],{type:'application/json'}),'Mon-projet-Aerdscheff.json');say('draft-status','Projet modifiable exporté. « Reprendre un projet » permet de le rouvrir sur cette page.');}); $('import-draft')?.addEventListener('click',()=>{$('draft-file').value='';$('draft-file').click();}); $('draft-file')?.addEventListener('change',async()=>{ const file=$('draft-file').files[0];if(!file)return; try{if(file.size>100000)throw new Error('Le fichier de projet est trop volumineux.'); const raw=JSON.parse(await file.text());E.validateDraft(raw,catalog); // Validate before modifying the active project. clearTimeout(searchTimer);applyDraft(raw);invalidate();setMotion();renderResults();renderSelection();if(restoredBrief&&$('composer'))makeProposal(false); say('draft-status','Projet repris : sélection, question, équipe et contexte restaurés.');go($('composer-title'),true); }catch(error){say('draft-status','Projet non importé. '+(error instanceof SyntaxError?'Le fichier JSON est illisible.':error.message));} }); $('forget-draft')?.addEventListener('click',()=>{ forgetNextSave=true;clearTimeout(searchTimer); try{localStorage.removeItem(storageKey);}catch(_){} selection=[];teamActive=false;activeIntent='';expanded=false;pendingSuggestions=[];retained={fields:{budget:'240','visit-hours':'120','teacher-count':'2','team-hours':'240'},filterDisciplines:[],teamDisciplines:[],adapt:false}; $('filters')?.reset();$('team-form')?.reset(); Object.keys(E.fieldLimits).forEach(id=>{const el=$(id);if(!el)return;if(el.tagName==='SELECT')el.value=el.querySelector('option[selected]')?.value||el.options[0].value;else el.value='';}); all('#team-disciplines input,#filter-disciplines input').forEach(c=>c.checked=false); invalidate();renderResults();renderSelection();$('team-refresh').hidden=true; $('request-body').value='';$('brief-paper').innerHTML='';$('proposal-text').textContent='';$('suggestion-options').innerHTML='';$('suggestion-note').textContent='';$('team-summary').innerHTML='';$('open-email').href='mailto:team@aerdscheff.lu';$('team-status').textContent='';say('draft-status','Le brouillon a été effacé sur cet appareil.'); setTimeout(()=>{forgetNextSave=false;},1);$('import-draft').focus({preventScroll:true}); }); async function copyText(text,status){ try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(text); else{const active=document.activeElement,t=document.createElement('textarea');t.value=text;t.style.position='fixed';t.style.left='-9999px';document.body.append(t);t.select();const ok=document.execCommand('copy');t.remove();active?.focus({preventScroll:true});if(!ok)throw new Error();} $(status).textContent='Message copié. Relisez-le et complétez-le dans votre messagerie.'; }catch(_){$(status).textContent='Sélectionnez et copiez le texte du message ci-dessus.';} } function mailLink(){ $('open-email').href='#transmettre-demande'; $('open-email').textContent='Transmettre ma demande'; $('request-status').textContent='Relis ton projet, puis complète tes coordonnées pour l’équipe.'; } $('prepare-request')?.addEventListener('click',()=>{ if(!proposal)return; const rows=selection.map(id=>'• '+item(id).title+' ('+hours(minutes(item(id)))+')').join('\n'); $('request-body').value='Bonjour,\n\nNous souhaitons préparer une formation autour de cette question :\n'+($('project-question').value.trim()||'Question à préciser ensemble.')+'\n\n'+rows+'\n\nÉtablissement : '+($('school').value||'à préciser')+'\nClasse : '+($('class-info').value||(field('level')&&field('level')!=='0'?field('level')+'e':'à préciser'))+' · '+(field('branch')||'filière à préciser')+'\nEffectif : '+($('participants').value||'à préciser')+'\nPériode et lieu : '+($('period').value||'à préciser')+(teamActive?'\nÉquipe : '+teamValues().teachers+' enseignants · '+teamValues().disciplines.join(', ')+(teamValues().production?'\nProduction commune souhaitée : '+teamValues().production:''):'')+'\n\nPourriez-vous nous préciser les possibilités d’accueil, l’articulation pédagogique, les tarifs et les disponibilités ?\n\nMerci,\n[Votre nom et vos coordonnées]'; mailLink();$('request-panel').hidden=false;go($('request-title'),true); }); $('request-body')?.addEventListener('input',mailLink); $('copy-email')?.addEventListener('click',()=>copyText($('request-body').value,'request-status')); })();

Extraklass · Préparons la suite

Une question, un projet.

Partage ton projet avec l’équipe pour préciser le parcours, les dates et les modalités.