84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
document.addEventListener("DOMContentLoaded", () => {
|
|
// --- NAV SWITCHER DES ONGLETS LATÉRAUX ---
|
|
const navLinks = document.querySelectorAll(".nav-link");
|
|
const tabContents = document.querySelectorAll(".tab-content");
|
|
|
|
navLinks.forEach(link => {
|
|
link.addEventListener("click", (e) => {
|
|
e.preventDefault();
|
|
navLinks.forEach(l => l.classList.remove("active"));
|
|
tabContents.forEach(tc => tc.classList.remove("active"));
|
|
|
|
link.classList.add("active");
|
|
const tabId = link.getAttribute("data-tab");
|
|
const targetSection = document.getElementById(tabId);
|
|
if (targetSection) {
|
|
targetSection.classList.add("active");
|
|
}
|
|
});
|
|
});
|
|
|
|
// --- DRAG & DROP ENGINE INTELLIGENT ---
|
|
const draggables = document.querySelectorAll(".rym-draggable-workout");
|
|
const dropZones = document.querySelectorAll(".drop-zone");
|
|
|
|
function recalculerChargeHebdo() {
|
|
let totalSéances = 0;
|
|
|
|
dropZones.forEach(zone => {
|
|
totalSéances += zone.querySelectorAll(".rym-draggable-workout").length;
|
|
});
|
|
|
|
// Calcul dynamique : 25% de charge par bloc actif, plafonné à 100%
|
|
const nouvelleCharge = Math.min(totalSéances * 25, 100);
|
|
|
|
// Cibler le deuxième spinner du dashboard (Charge Hebdo)
|
|
const spinnerCharge = document.querySelectorAll(".rym-spinner-wrapper")[1];
|
|
if (spinnerCharge) {
|
|
const cercleStroke = spinnerCharge.querySelector(".circle-stroke");
|
|
const texteValeur = spinnerCharge.querySelector(".rym-spinner-text span");
|
|
|
|
texteValeur.textContent = nouvelleCharge;
|
|
cercleStroke.setAttribute("stroke-dasharray", `${nouvelleCharge}, 100`);
|
|
}
|
|
}
|
|
|
|
draggables.forEach(draggable => {
|
|
draggable.addEventListener("dragstart", (e) => {
|
|
e.dataTransfer.setData("text/plain", draggable.id);
|
|
setTimeout(() => { draggable.style.display = "none"; }, 0);
|
|
});
|
|
|
|
draggable.addEventListener("dragend", () => {
|
|
draggable.style.display = "block";
|
|
});
|
|
});
|
|
|
|
dropZones.forEach(zone => {
|
|
zone.addEventListener("dragover", (e) => {
|
|
e.preventDefault();
|
|
zone.classList.add("drag-over");
|
|
});
|
|
|
|
zone.addEventListener("dragleave", () => {
|
|
zone.classList.remove("drag-over");
|
|
});
|
|
|
|
zone.addEventListener("drop", (e) => {
|
|
e.preventDefault();
|
|
zone.classList.remove("drag-over");
|
|
|
|
const id = e.dataTransfer.getData("text/plain");
|
|
const draggableElement = document.getElementById(id);
|
|
|
|
if (draggableElement) {
|
|
zone.appendChild(draggableElement);
|
|
recalculerChargeHebdo();
|
|
}
|
|
});
|
|
});
|
|
|
|
// Calcul initial
|
|
recalculerChargeHebdo();
|
|
});
|