Séance de coaching – p pp

Vous devez être connecté.

Séances de coaching

Ajoutez des séances et sélectionnez les exercices depuis les articles.

#fast-coaching-app{max-width:950px;margin:auto;padding:20px;font-family:Arial,sans-serif} .fast-header{background:linear-gradient(180deg,#D90429,#a0001c);color:#fff;padding:28px;border-radius:22px;text-align:center;margin-bottom:25px} .fast-header h1{margin:0;font-size:28px} .fast-header p{margin:10px 0 20px} button{border:0;cursor:pointer;border-radius:12px;font-weight:700} #addSessionBtn{background:#fff;color:#D90429;padding:14px 22px;font-size:16px} .session{background:#fff;border-radius:18px;box-shadow:0 6px 18px rgba(0,0,0,.12);margin-bottom:20px;overflow:hidden;border:1px solid #eee} .session-title{padding:18px;background:#f7f7f7;display:flex;gap:10px;align-items:center} .session-title input{flex:1;font-size:18px;font-weight:700;border:1px solid #ddd;border-radius:10px;padding:10px} .session-actions{display:flex;gap:8px} .session-actions button,.add-exercise{background:#D90429;color:#fff;padding:10px 14px} .session-content{padding:18px} .add-exercise{margin-bottom:15px} .exercise-search{display:none;background:#fafafa;padding:15px;border-radius:14px;margin-bottom:15px;border:1px solid #eee} .exercise-search input{width:100%;padding:12px;border-radius:10px;border:1px solid #ddd} .search-item{display:flex;align-items:center;gap:12px;padding:10px;border-bottom:1px solid #eee;cursor:pointer} .search-item img{width:60px;height:60px;object-fit:cover;border-radius:10px;background:#eee} .exercise-line{display:grid;grid-template-columns:65px 1fr 80px 80px 90px 95px 40px;gap:8px;align-items:center;padding:12px;border:1px solid #eee;border-radius:14px;margin-bottom:10px} .exercise-line img{width:60px;height:60px;object-fit:cover;border-radius:10px} .exercise-line input{padding:8px;border:1px solid #ddd;border-radius:8px;width:100%} .exercise-title{font-weight:700;color:#111;text-decoration:none} .delete-exercise{background:#333;color:white;padding:8px} .done{opacity:.45;text-decoration:line-through} .collapsed .session-content{display:none} @media(max-width:700px){ .session-title{flex-direction:column;align-items:stretch} .exercise-line{grid-template-columns:60px 1fr} .exercise-line input,.exercise-line label,.delete-exercise{grid-column:2} } document.addEventListener(“DOMContentLoaded”, function(){ const storageKey = “fast_coaching_sessions_” + window.location.pathname; const sessionsList = document.getElementById(“sessionsList”); const addSessionBtn = document.getElementById(“addSessionBtn”); let sessions = JSON.parse(localStorage.getItem(storageKey) || “[]”); function save(){ localStorage.setItem(storageKey, JSON.stringify(sessions)); } function cleanTitle(html){ let div = document.createElement(“div”); div.innerHTML = html; return div.textContent || div.innerText || “”; } function getPostImage(post){ return new Promise(resolve => { if(post._embedded && post._embedded[“wp:featuredmedia”] && post._embedded[“wp:featuredmedia”][0]){ let media = post._embedded[“wp:featuredmedia”][0]; if(media.media_details && media.media_details.sizes && media.media_details.sizes.thumbnail){ resolve(media.media_details.sizes.thumbnail.source_url); return; } if(media.source_url){ resolve(media.source_url); return; } } if(post.featured_media && post.featured_media !== 0){ fetch(“/wp-json/wp/v2/media/” + post.featured_media) .then(r => r.json()) .then(media => { if(media.media_details && media.media_details.sizes && media.media_details.sizes.thumbnail){ resolve(media.media_details.sizes.thumbnail.source_url); } else if(media.source_url){ resolve(media.source_url); } else { resolve(“https://fast-coaching.fr/wp-content/uploads/2026/04/ChatGPT-Image-21-avr.-2026-13_34_33.png”); } }) .catch(() => { resolve(“https://fast-coaching.fr/wp-content/uploads/2026/04/ChatGPT-Image-21-avr.-2026-13_34_33.png”); }); } else { resolve(“https://fast-coaching.fr/wp-content/uploads/2026/04/ChatGPT-Image-21-avr.-2026-13_34_33.png”); } }); } function render(){ sessionsList.innerHTML = “”; sessions.forEach((session, sessionIndex) => { const div = document.createElement(“div”); div.className = “session ” + (session.collapsed ? “collapsed” : “”); div.innerHTML = `
`; div.querySelector(“.session-title input”).addEventListener(“input”, function(){ sessions[sessionIndex].title = this.value; save(); }); div.querySelector(“.toggleSession”).addEventListener(“click”, function(){ sessions[sessionIndex].collapsed = !sessions[sessionIndex].collapsed; save(); render(); }); div.querySelector(“.deleteSession”).addEventListener(“click”, function(){ if(confirm(“Supprimer cette séance ?”)){ sessions.splice(sessionIndex, 1); save(); render(); } }); const searchBox = div.querySelector(“.exercise-search”); const searchInput = searchBox.querySelector(“input”); const resultsBox = searchBox.querySelector(“.search-results”); div.querySelector(“.add-exercise”).addEventListener(“click”, function(){ searchBox.style.display = “block”; searchInput.focus(); }); searchInput.addEventListener(“input”, function(){ const q = this.value.trim(); if(q.length res.json()) .then(posts => { resultsBox.innerHTML = “”; posts.forEach(post => { getPostImage(post).then(img => { const item = document.createElement(“div”); item.className = “search-item”; item.innerHTML = ` ${cleanTitle(post.title.rendered)} `; item.addEventListener(“click”, function(){ sessions[sessionIndex].exercises.push({ title: cleanTitle(post.title.rendered), image: img, url: post.link, masse: “”, series: “”, reps: “”, done: false }); save(); render(); }); resultsBox.appendChild(item); }); }); }); }); const exercisesBox = div.querySelector(“.exercises”); session.exercises.forEach((exo, exoIndex) => { const line = document.createElement(“div”); line.className = “exercise-line ” + (exo.done ? “done” : “”); line.innerHTML = ` ${exo.title} `; const inputs = line.querySelectorAll(“input”); inputs[0].addEventListener(“input”, function(){ sessions[sessionIndex].exercises[exoIndex].masse = this.value; save(); }); inputs[1].addEventListener(“input”, function(){ sessions[sessionIndex].exercises[exoIndex].series = this.value; save(); }); inputs[2].addEventListener(“input”, function(){ sessions[sessionIndex].exercises[exoIndex].reps = this.value; save(); }); inputs[3].addEventListener(“change”, function(){ sessions[sessionIndex].exercises[exoIndex].done = this.checked; save(); render(); }); line.querySelector(“.delete-exercise”).addEventListener(“click”, function(){ sessions[sessionIndex].exercises.splice(exoIndex, 1); save(); render(); }); exercisesBox.appendChild(line); }); sessionsList.appendChild(div); }); } addSessionBtn.addEventListener(“click”, function(){ const today = new Date().toLocaleDateString(“fr-FR”); sessions.unshift({ title: “Séance du ” + today, collapsed: false, exercises: [] }); save(); render(); }); render(); });
FAST Coaching