1
0
mirror of https://git.topisto.net/tibo/template.git synced 2026-03-31 17:19:10 +00:00

202511261413

This commit is contained in:
Thibaud
2025-11-26 14:13:40 +01:00
parent 69b9d98a7e
commit 12df9f1274
4 changed files with 232 additions and 64 deletions

View File

@@ -34,6 +34,8 @@
<div id="div_after_zone"></div>
</template>
<script src="log.js"></script>
<script src="scroll.js"></script>
<script src="zones.js"></script>
<script>
@@ -43,16 +45,6 @@
</script>
<script>
const scrollThrottleCallback = (callback, timeout) => {
let wait = false;
return () => {
if (wait) return;
callback.call();
wait = true;
setTimeout(() => { wait = false; }, timeout);
};
};
function addClassToElement(id,className){
const element=document.querySelector(id);
if (element) element.classList.add(className);
@@ -115,21 +107,19 @@
}
}
function scrollToElement(elementSelector) {
const element = document.querySelector(elementSelector);
if (element) {
element.scrollIntoView();
logMsg('htmlElement','scrollTo '+elementSelector);
}
}
// ----
// ---- La page est une machine à états
// ----
let currentEtat = 1;
let maxEtat = 4;
function etatSections(etat) {
logMsg('etatSection','Etat courant '+etat);
//if (currentEtat == etat) return;
currentEtat=etat;
logMsg('etatSection','Etat courant '+currentEtat);
switch (etat) {
case 1 :
scrollToElement('#div_before_header');
section_header.style.display = "block";
section_synthese.style.display = "block";
removeClassToElement('#div_navbar','navbar_fixed');
removeClassToElement('#div_before_synthese','div_before_synthese_when_navbar_fixed');
break;
@@ -145,59 +135,55 @@
addClassToElement('#div_navbar','navbar_fixed');
addClassToElement('#div_before_synthese','div_before_synthese_when_navbar_fixed');
break;
default :
break;
}
}
let currentEtat=1;
function changeEtatUp() {
if (++currentEtat > 3) currentEtat = 3;
if (++currentEtat > maxEtat) currentEtat = maxEtat;
etatSections(currentEtat);
}
function changeEtatDown(){
if (--currentEtat > 3) currentEtat = 1;
if (--currentEtat < 1) currentEtat = 1;
etatSections(currentEtat);
}
after_section_header.addEventListener("click", function() {
logMsg('etatSection','toggle section_header ');
if (currentEtat!=1) etatSections(1);
else etatSections(2);
});
after_section_synthese.addEventListener("click", function() {
logMsg('etatSection','toggle section_synthese ');
if (currentEtat==3) changeEtatDown();
else changeEtatUp();
});
after_section_header.addEventListener("click", function() {
logMsg('etatSection','toggle section_header ');
if (currentEtat==2) changeEtatDown();
else changeEtatUp();
});
function beforeSection(_visible) {
if (!_visible) changeEtatUp();
}
function afterSection(_visible) {
if (_visible) changeEtatDown();
}
function beforeNavbarVisibility(_visible) {
intersectionObserverLog('TRIGGER '+arguments.callee.name);
beforeSection(_visible)
}
function afterNavbarVisibility(_visible) {
intersectionObserverLog('TRIGGER '+arguments.callee.name);
afterSection(_visible)
}
function beforeHeaderVisibility(_visible) {
intersectionObserverLog('TRIGGER '+arguments.callee.name);
if (!_visible) {
changeEtatUp();
}
beforeSection(_visible)
}
function afterHeaderVisibility(_visible) {
intersectionObserverLog('TRIGGER '+arguments.callee.name);
if (_visible) {
changeEtatDown();
}
afterSection(_visible)
}
addIntersectionObserverEntry("div_before_header", beforeHeaderVisibility);
addIntersectionObserverEntry("div_after_header", afterHeaderVisibility);
function beforeNavbarVisibility(_visible) {
intersectionObserverLog('TRIGGER '+arguments.callee.name);
if (!_visible) {
changeEtatUp();
}
}
function afterNavbarVisibility(_visible) {
intersectionObserverLog('TRIGGER '+arguments.callee.name);
if (_visible) {
changeEtatDown();
}
}
addIntersectionObserverEntry("div_before_navbar", beforeNavbarVisibility);
//addIntersectionObserverEntry("div_after_navbar", afterNavbarVisibility);