Aufregerthemen Schliessen

Le Tour de France Femmes 2023 commence ce dimanche, voici les ...

Le Tour de France Femmes 2023 commence ce dimanche voici les
Vous voulez profiter de la torpeur estivale pour faire une petite sieste devant le Tour féminin, mais vous ne voulez pas rater les ascensions ou les moments forts ? Ce guide – et ses rappels pour votre calendrier – a été créé pour vous.

Vous ne voulez rien rater de la seconde édition du Tour de France Femmes, vous êtes en vacances et vous profiteriez bien d’une petite sieste post-déjeuner ? Vous regardez la Grande Boucle d’un œil au bureau ? Notre guide de la sieste va sauver le sommeil de la fin de votre mois de juillet.

Pour les huit étapes du parcours officiel, nous avons recensé les sprints, les ascensions et les moments de tension (l’approche de la fin d’une étape ou avant une éventuelle bordure, par exemple) pour créer une chronologie prévisionnelle des moments à ne pas rater du 23 au 30 juillet. A l’inverse, nous avons identifié les temps potentiellement plus faibles, parfaits pour planifier un petit sieston, puisque c’est une pratique vertueuse (même si vous êtes au bureau, rappelons-le).

Une mise en garde néanmoins : si, grâce à l’analyse du parcours, nous pouvons prévoir les longues étapes de plaine, il nous est impossible d’anticiper une échappée pleine de panache, l’explosion en vol d’une sprinteuse en montagne ou encore une bordure inattendue entre Albi et Blagnac.

Nouveauté 2023 : comme chez les messieurs, nous avons ajouté la possibilité d’importer les moments forts dans votre calendrier numérique et ainsi de vous préparer des rappels, comme autant de réveils de la sieste.

Les lignes représentent la difficulté des ascensions, et non pas le profil exact de l'étape.
Temps faible
Sprint intermédiaire
Temps fort
Ascension
Sources : ASO, La Flamme rouge
`; document.body.appendChild(tooltip) tooltip.style.top = this.getBoundingClientRect().top - this.getBoundingClientRect().height + window.scrollY - (tooltip.offsetHeight + decalY) + 'px' tooltip.style.left = this.getBoundingClientRect().left + this.getBoundingClientRect().width / 2 - ((tooltip.getBoundingClientRect().width / 2) - decalX) + 'px' tooltip.addEventListener('click', () => this.remove()); }) elmt.addEventListener('mouseout', function() { let tooltip = document.querySelector('.tooltipdecodeurs'); if (tooltip != null) tooltip.remove() }) }) } const suisse = "", belgique = "", danemark = "", espagne = "", etapes = { "1": { "nom": "Clermont-Ferrand → Clermont-Ferrand", "type": "plat", "date": "23/07/2023", "distance": 123.8, "deniv": 1044, "rabe": "", "depart": "12:30", "arrivee": "15:36", "text_arr": "15:30" }, "2": { "nom": "Clermont-Ferrand → Mauriac", "type": "accidentée", "date": "24/07/2023", "distance": 151.7, "deniv": 2422, "rabe": "", "depart": "13:05", "arrivee": "17:45", "text_arr": "17:40" }, "3": { "nom": "Collonges-la-Rouge → Montignac-Lascaux", "type": "plat", "date": "25/07/2023", "distance": 147.2, "deniv": 1846, "rabe": "", "depart": "13:45", "arrivee": "17:45", "text_arr": "17:40" }, "4": { "nom": "Cahors → Rodez", "type": "accidentée", "date": "26/07/2023", "distance": 177.1, "deniv": 2503, "rabe": "", "depart": "12:40", "arrivee": "17:44", "text_arr": "17:40" }, "5": { "nom": "Onet-le-Château → Albi", "type": "plat", "date": "27/07/2023", "distance": 126.1, "deniv": 1722, "rabe": "", "depart": "14:20", "arrivee": "17:39", "text_arr": "17:30" }, "6": { "nom": "Albi → Blagnac", "type": "plat", "date": "28/07/2023", "distance": 122.1, "deniv": 1162, "rabe": "", "depart": "14:30", "arrivee": "17:38", "text_arr": "17:30" }, "7": { "nom": "Lannemezan → Tourmalet Bagnères-de-Bigorre", "type": "montagne", "date": "29/07/2023", "distance": 89.8, "deniv": 2613, "rabe": "", "depart": "16:25", "arrivee": "19:25", "text_arr": "19:20" }, "8": { "nom": "Pau → Pau", "type": "contre-la-montre", "date": "30/07/2023", "distance": "22.6", "deniv": 198, "rabe": "", "depart": "14:30", "arrivee": "17:30", "text_arr": "17:30" } }; moment.locale('fr', { months: "janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"), monthsShort: "janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"), weekdays: "dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"), weekdaysShort: "dim._lun._mar._mer._jeu._ven._sam.".split("_"), weekdaysMin: "Di_Lu_Ma_Me_Je_Ve_Sa".split("_"), longDateFormat: { LT: "HH:mm", LTS: "HH:mm:ss", L: "DD/MM/YYYY", LL: "D MMMM YYYY", LLL: "D MMMM YYYY LT", LLLL: "dddd D MMMM YYYY LT" }, calendar: { sameDay: "[Aujourd'hui à] LT", nextDay: '[Demain à] LT', nextWeek: 'dddd [à] LT', lastDay: '[Hier à] LT', lastWeek: 'dddd [dernier à] LT', sameElse: 'L' }, ordinalParse: /\d{1}(er)/, ordinal: function(number) { return number + (number === 1 ? 'er' : ''); } }); var data = [{ "etape": 1, "quoi": "sieste", "nom": "", "km": "", "debut": "12:30", "fin": "14:42", "rabe": "" }, { "etape": 1, "quoi": "sprint", "nom": "Saint-Hippolyte", "km": "97.1", "debut": "14:42", "fin": "14:56", "rabe": "" }, { "etape": 1, "quoi": "sieste", "nom": "", "km": "", "debut": "14:56", "fin": "15:00", "rabe": "" }, { "etape": 1, "quoi": "cat3", "nom": "Côte de Durtol", "km": "114.5", "debut": "15:00", "fin": "15:22", "rabe": "1,7 km à 7,2 %" }, { "etape": 1, "quoi": "arrivée", "nom": "Arrivée à Clermont-Ferrand (Puy-de-Dôme)", "km": "123.8", "debut": "15:22", "fin": "15:36", "rabe": "" }, { "etape": 2, "quoi": "sieste", "nom": "", "km": "", "debut": "13:05", "fin": "14:30", "rabe": "" }, { "etape": 2, "quoi": "cat4", "nom": "Côte du Mont-Dore", "km": "42.6", "debut": "14:30", "fin": "14:40", "rabe": "1,3 km à 6,6 %" }, { "etape": 2, "quoi": "cat4", "nom": "Côte de la Stèle", "km": "51", "debut": "14:40", "fin": "14:52", "rabe": "1,8 km à 5,1 %" }, { "etape": 2, "quoi": "sieste", "nom": "", "km": "", "debut": "14:52", "fin": "16:00", "rabe": "" }, { "etape": 2, "quoi": "cat2", "nom": "Côte des Plaines (630 m)", "km": "105.1", "debut": "16:00", "fin": "16:20", "rabe": "4,5 km à 5,5 %" }, { "etape": 2, "quoi": "cat4", "nom": "Côte des Broissières", "km": "108.4", "debut": "16:20", "fin": "16:31", "rabe": "1,2 km à 7,2 %" }, { "etape": 2, "quoi": "sprint", "nom": "Mauriac", "km": "112.6", "debut": "16:31", "fin": "16:38", "rabe": "" }, { "etape": 2, "quoi": "cat4", "nom": "Côte de Merlhac", "km": "128.6", "debut": "16:38", "fin": "17:05", "rabe": "1,9 km à 5,5 %" }, { "etape": 2, "quoi": "cat3", "nom": "Côte de Trébiac", "km": "150.3", "debut": "17:05", "fin": "17:20", "rabe": "3,4 km à 5,8 %" }, { "etape": 2, "quoi": "arrivée", "nom": "Arrivée à Mauriac (Cantal)", "km": "151.7", "debut": "17:20", "fin": "17:45", "rabe": "" }, { "etape": 3, "quoi": "sieste", "nom": "", "km": "", "debut": "13:45", "fin": "14:20", "rabe": "" }, { "etape": 3, "quoi": "cat3", "nom": "Côte du Peyroux", "km": "27.2", "debut": "14:20", "fin": "14:29", "rabe": "4,8 km à 4 %" }, { "etape": 3, "quoi": "cat4", "nom": "Côte du Pératel", "km": "30.9", "debut": "14:29", "fin": "14:35", "rabe": "2 km à 5,3 %" }, { "etape": 3, "quoi": "sieste", "nom": "", "km": "", "debut": "14:35", "fin": "15:00", "rabe": "" }, { "etape": 3, "quoi": "cat4", "nom": "Côte de l'Escurotte", "km": "58.1", "debut": "15:00", "fin": "15:19", "rabe": "2,6 km à 4,7 %" }, { "etape": 3, "quoi": "sieste", "nom": "", "km": "", "debut": "15:19", "fin": "15:50", "rabe": "" }, { "etape": 3, "quoi": "cat4", "nom": "Côte des Andrieux", "km": "89.4", "debut": "15:50", "fin": "16:05", "rabe": "2,6 km à 4,1 %" }, { "etape": 3, "quoi": "cat4", "nom": "Côte de Saint-Robert", "km": "92.2", "debut": "16:05", "fin": "16:15", "rabe": "1,1 km à 6,2 %" }, { "etape": 3, "quoi": "sieste", "nom": "", "km": "", "debut": "16:15", "fin": "16:43", "rabe": "" }, { "etape": 3, "quoi": "sprint", "nom": "Badefols-d'Ans", "km": "121.4", "debut": "16:43", "fin": "17:02", "rabe": "" }, { "etape": 3, "quoi": "20km", "nom": "", "km": "127.20", "debut": "17:02", "fin": "17:20", "rabe": "" }, { "etape": 3, "quoi": "arrivée", "nom": "Arrivée à Collonges-la-Rouge (Corrèze)", "km": "147.20", "debut": "17:20", "fin": "17:44", "rabe": "" }, { "etape": 4, "quoi": "sieste", "nom": "", "km": "", "debut": "12:40", "fin": "13:00", "rabe": "" }, { "etape": 4, "quoi": "cat4", "nom": "Côte de Crayssac", "km": "16.5", "debut": "13:00", "fin": "13:08", "rabe": "2,3 km à 4,8 %" }, { "etape": 4, "quoi": "sieste", "nom": "", "km": "", "debut": "13:08", "fin": "14:45", "rabe": "" }, { "etape": 4, "quoi": "cat4", "nom": "Côte de Falgeyras", "km": "84.9", "debut": "14:45", "fin": "15:06", "rabe": "3 km à 4 %" }, { "etape": 4, "quoi": "sieste", "nom": "", "km": "", "debut": "15:06", "fin": "16:00", "rabe": "" }, { "etape": 4, "quoi": "sprint", "nom": "Rignac", "km": "130.6", "debut": "16:00", "fin": "16:24", "rabe": "" }, { "etape": 4, "quoi": "cat3", "nom": "Côte de Colombès", "km": "142.7", "debut": "16:24", "fin": "16:44", "rabe": "6,5 km à 4,2 %" }, { "etape": 4, "quoi": "cat2", "nom": "Côte de Moyrazès (722 m)", "km": "161.7", "debut": "16:44", "fin": "17:15", "rabe": "4,6 km à 5,5 %" }, { "etape": 4, "quoi": "cat3", "nom": "Côte de Lavernhe", "km": "168.20", "debut": "17:15", "fin": "17:28", "rabe": "2,2 km à 7,1 %" }, { "etape": 4, "quoi": "arrivée", "nom": "Arrivée à Rodez (Aveyron)", "km": "177.1", "debut": "17:28", "fin": "17:44", "rabe": "" }, { "etape": 5, "quoi": "sieste", "nom": "", "km": "", "debut": "14:20", "fin": "16:00", "rabe": "" }, { "etape": 5, "quoi": "cat3", "nom": "Côte de Najac", "km": "74.9", "debut": "16:00", "fin": "16:20", "rabe": "2,1 km à 7,4 %" }, { "etape": 5, "quoi": "cat3", "nom": "Côte de Laguépie", "km": "85.2", "debut": "16:20", "fin": "16:40", "rabe": "1,5 km à 9 %" }, { "etape": 5, "quoi": "sprint", "nom": "Monestiés", "km": "99.8", "debut": "16:40", "fin": "16:50", "rabe": "" }, { "etape": 5, "quoi": "cat4", "nom": "Côte de Monestiés", "km": "102.2", "debut": "16:50", "fin": "17:01", "rabe": "1,6 km à 6,4 %" }, { "etape": 5, "quoi": "20km", "nom": "", "km": "106.1", "debut": "17:01", "fin": "17:15", "rabe": "" }, { "etape": 5, "quoi": "arrivée", "nom": "Arrivée à Albi (Tarn)", "km": "126.1", "debut": "17:15", "fin": "17:39", "rabe": "" }, { "etape": 6, "quoi": "sieste", "nom": "", "km": "", "debut": "14:30", "fin": "15:10", "rabe": "" }, { "etape": 6, "quoi": "cat4", "nom": "Côte de la Cadène", "km": "30.9", "debut": "15:10", "fin": "15:17", "rabe": "2,5 km à 4,5 %" }, { "etape": 6, "quoi": "sieste", "nom": "", "km": "", "debut": "15:17", "fin": "15:38", "rabe": "" }, { "etape": 6, "quoi": "cat4", "nom": "Côte de Puycelsi", "km": "51.3", "debut": "15:38", "fin": "15:50", "rabe": "1,8 km à 6 %" }, { "etape": 6, "quoi": "cat4", "nom": "Côte du Clos Pourtié", "km": "58", "debut": "15:50", "fin": "16:00", "rabe": "2,6 km à 4,8 %" }, { "etape": 6, "quoi": "sieste", "nom": "", "km": "", "debut": "16:00", "fin": "16:20", "rabe": "" }, { "etape": 6, "quoi": "cat4", "nom": "Côte de la Gayre", "km": "81.8", "debut": "16:20", "fin": "16:40", "rabe": "1 km à 4,9 %" }, { "etape": 6, "quoi": "sprint", "nom": "Hameau de Rastel", "km": "92.5", "debut": "16:40", "fin": "16:59", "rabe": "" }, { "etape": 6, "quoi": "20km", "nom": "", "km": "102.1", "debut": "16:59", "fin": "17:20", "rabe": "" }, { "etape": 6, "quoi": "arrivée", "nom": "Arrivée à Blagnac (Haute-Garonne)", "km": "122.1", "debut": "17:20", "fin": "17:38", "rabe": "" }, { "etape": 7, "quoi": "sieste", "nom": "", "km": "", "debut": "16:25", "fin": "17:19", "rabe": "" }, { "etape": 7, "quoi": "sprint", "nom": "Sarrancolin", "km": "41.7", "debut": "17:19", "fin": "17:22", "rabe": "" }, { "etape": 7, "quoi": "cat1", "nom": "Col d'Aspin (1 490 m)", "km": "60.1", "debut": "17:22", "fin": "18:14", "rabe": "12 km à 6,5 %" }, { "etape": 7, "quoi": "suivre", "nom": "", "km": "", "debut": "18:14", "fin": "18:30", "rabe": "" }, { "etape": 7, "quoi": "hc", "nom": "Arrivée au Tourmalet (2 110 m)", "km": "89.8", "debut": "18:30", "fin": "19:25", "rabe": "17 km à 7,3 %" }, { "etape": 8, "quoi": "sieste", "nom": "", "km": "", "debut": "14:30", "fin": "16:30", "rabe": "" }, { "etape": 8, "quoi": "suivre", "nom": "Départ des coureuses du haut de tableau", "km": "", "debut": "16:30", "fin": "17:00", "rabe": "" }, { "etape": 8, "quoi": "arrivée", "nom": "Arrivée des dernières coureuses à Pau", "km": "22.6", "debut": "17:00", "fin": "17:30", "rabe": "" } ]; var dico = { "sieste": { "trad": "Sieste", "couleur": "#cecece" }, "pave": { "trad": "Secteur pavé" }, "hc": { "trad": "hors catégorie", "couleur": "#a50f15", "picto": "HC", "taille": 6 }, "cat1": { "trad": "de première catégorie", "couleur": "#ef3b2c", "picto": "1", "taille": 5 }, "cat2": { "trad": "de deuxième catégorie", "couleur": "#fb6a4a", "picto": "2", "taille": 4 }, "cat3": { "trad": "de troisième catégorie", "couleur": "#fc9272", "picto": "3", "taille": 3 }, "cat4": { "trad": "de quatrième catégorie", "couleur": "#fcbba1", "picto": "4", "taille": 2 }, "sprint": { "trad": "Sprint intermédiaire", "couleur": "#5DB142", "picto": "S" }, "20km": { "trad": "derniers kilomètres de l'étape", "couleur": "#a1a8ad" }, "10km": { "trad": "derniers kilomètres de l'étape", "couleur": "#a1a8ad" }, "arrivée": { "trad": "Fin de l'étape ", "couleur": "#788289" }, "suivre": { "trad": "Tranche à suivre" }, "départ": { "trad": "Départ", "couleur": "#788289" } }, cols = ["cat1", "cat2", "cat3", "cat4", "hc"], plat = [1, 2, 3, 4, 5, 6, 7, 8], corresArrivee = {}; var chevron = '', doigt = ''; /* fonction pour l'affichage de l'heure */ function aLaBonneHeure(heure) { return heure.replace(":", " h ").replace("h 00", "h") } function nettoyer(str) { return str.replace(/[&\/\\#,+()$~%.'":*?{}éàôïëêèç]/g, '').replace(/ /g, "").toLowerCase(); } function milliers(num) { resultat = num if (num = 1000000) { resultat = String((num / 1000000).toFixed(1)).replace(".", ",").replace(",0", "") + " million" + ((num >= 2000000) ? "s" : "") + " d'" } return resultat; } /* boucle pour trouver les étapes plates (côtes en dessous de la 2e catégorie) */ for (const [i, d] of data.entries()) { /* et on checke l'altitude de l'arrivée */ if (i 0) { f = data[i - 1]; if (d.etape != f.etape && dico[f.quoi].taille) { corresArrivee[f.etape] = dico[f.quoi].taille; } } if (d.quoi == "cat2" || d.quoi == "cat1" || d.quoi == "hc") { oudonc = plat.indexOf(d.etape) if (oudonc != -1) { /* si on a du gros col, on vire de la liste*/ plat.splice(oudonc, 1); } } } const finDuTour = moment(etapes[8].date, "DD/MM/YYYY").hours(18).minutes(30); var combien = Object.keys(etapes).length, largeur = document.getElementById("sieste2023").offsetWidth, hauteur = largeur / 6, hauteurbarre = hauteur / 7, hauteurgraphe = hauteur / 1.8, tps = d3.timeParse("%H:%M"), radius = 5, mobile = false, quelleCourbe = d3.curveStep, petitradius = 2.5, margin = { top: hauteur / 10, right: largeur / 12, bottom: hauteur / 3, left: largeur / 12 }, tailleTriangle = largeur / 6; /* en mobile */ if (largeur étape passée"; } /* la titraille */ contenu = "
Étape " + i + " (" + String(etapes[i].type).replace("contre-la-montre", "CLM") + ")"; contenu += " – "; if (largeur
" if (largeur " + cartouche + etapes[i].nom.replace("–", " – ").replace("Contre-la-montre", "CLM").replace("????????", espagne); contenu += " : "; } else { contenu += "
" + cartouche + etapes[i].nom.replace("–", " – ").replace("????????", espagne); contenu += " : "; } contenu += String(etapes[i].distance).replace(".", ",") + " km"; if (etapes[i].deniv) { contenu += ", " + milliers(etapes[i].deniv) + "m d'ascension" /*de D+*/ ; } contenu += "
"; /* on envoie tout */ d3.select("#etape" + i) .attr("data-rangement", ((classeenrabe == " passe") ? i + 21 : i)) .html(contenu) .classed(classeenrabe, true) /* le svg */ var svg = d3.select("#etape" + i).append("svg") .attr("width", "100%") .attr("viewBox", function(d) { if (plat.indexOf(i) != -1) { return "0 " + hauteur / 2.4 + " " + (largeur + margin.left + margin.right) + " " + (hauteur * .6 + margin.top + margin.bottom) } else { return "0 0 " + (largeur + margin.left + margin.right) + " " + (hauteur + margin.top + margin.bottom) } }); var graphe = svg.append("g") .attr("class", "graphe") .attr("transform", "translate(" + margin.left + "," + (hauteur - (hauteurgraphe * 1.1)) + ")"); var barre = svg.append("g") .attr("class", "groupebarre") .attr("transform", "translate(" + margin.left + "," + hauteur + ")"); /* les données de la courbe */ var dataligne = [{ debut: etapes[i].depart, fin: etapes[i].depart, val: 1 }]; for (const [j, e] of data.entries()) { if (e.etape == i) { valeur = 1; if (dico[e.quoi].taille) { valeur = dico[e.quoi].taille; } /* bricolage pour la courbe, quand les durées sont supérieures à 40 minutes, soit 2400000 millisecondes */ if (tps(e.fin) - tps(e.debut) >= 2400000) { tdeb = moment(e.debut, "HH:mm"); tfin = moment(e.fin, "HH:mm"); milieu = (tfin.diff(tdeb) / 60000) / 2; nouveaumilieu = moment(e.debut, "HH:mm").add(milieu, "minutes"); /* on pousse */ dataligne.push({ debut: e.debut, fin: nouveaumilieu.format("HH:mm"), val: +valeur }); dataligne.push({ debut: nouveaumilieu.format("HH:mm"), fin: e.fin, val: +valeur }); } else { dataligne.push({ debut: e.debut, fin: e.fin, val: +valeur }); } } } dataligne.push({ debut: etapes[i].arrivee, fin: etapes[i].arrivee, val: dataligne[dataligne.length - 1].val }) /* la courbe */ var ligne = d3.line() .curve(quelleCourbe) .x(d => (x(tps(d.debut)) + x(tps(d.fin))) / 2) .y(d => y(d.val)); var aire = d3.area() .curve(quelleCourbe) .x(d => (x(tps(d.debut)) + x(tps(d.fin))) / 2) .y0(hauteurgraphe) .y1(d => y(d.val)); graphe.append("path") .data([dataligne]) .attr("class", "aire") .attr("d", aire); graphe.append("path") .data([dataligne]) .attr("class", "ligne") .attr("d", ligne); /* les petits cercles du début et de la fin les textes */ graphe.selectAll("circle") .data([etapes[i].depart, etapes[i].arrivee]) .enter() .append("circle") .attr("class", "petitpoint") .attr("cx", function(d, j) { if (j == 0) { return x(tps(d)) + petitradius; } else { return x(tps(d)) - petitradius; } }) .attr("cy", function(d, j) { alt = 1; if (j == 1) { if (corresArrivee[i]) { alt = corresArrivee[i]; } } return y(alt); }) .attr("r", petitradius); graphe.selectAll("text") .data([etapes[i].depart, etapes[i].arrivee]) .enter() .append("text") .attr("class", function(d, j) { if (j == 0) { return "texte depart passelect"; } else { return "texte arrivee passelect"; } }) .attr("x", function(d, j) { if (j == 0) { return x(tps(d)) - (petitradius * 2); } else { return x(tps(d)) + (petitradius * 2); } }) .attr("y", function(d, j) { alt = 1; if (j == 1) { if (corresArrivee[i]) { alt = corresArrivee[i]; } } return y(alt) + (petitradius * 1.5); }) .text(d => aLaBonneHeure(d.substring(0, d.length - 1) + "0")); var dataCotes = data.filter(d => +d.etape == i && cols.indexOf(d.quoi) != -1); /* les cercles */ graphe.selectAll("circle.cote") .data(dataCotes) .enter() .append("circle") .attr("class", "cote") .attr("cx", d => (x(tps(d.debut)) + x(tps(d.fin))) / 2) .attr("cy", d => y(dico[d.quoi].taille)) .attr("r", radius) .attr("data-tt", function(d) { d.km = +d.km; html = "
" + d.nom; if (d.rabe) { html += "" + d.rabe + ""; } html += "
"; html += "
KM " + String((etapes[i].distance - d.km).toFixed(1)).replace(".", ",").replace(",0", "") + " – ascension " + dico[d.quoi].trad + "
"; html += ""; html += "
Passage prévu entre " + d.debut.replace(":", " h ") + " et " + d.fin.replace(":", " h ") + "
"; html += ""; return html; }); /* le texte des ascensions */ graphe.selectAll("text.textecote") .data(dataCotes) .enter() .append("text") .attr("class", "textecote passelect") .attr("x", d => (x(tps(d.debut)) + x(tps(d.fin))) / 2) .attr("y", d => +(y(dico[d.quoi].taille) - radius * 1.8)) .text(d => d.quoi.replace("cat", "")); /* la texture */ var t = textures.lines() .orientation("diagonal") .size(6) .strokeWidth(2) .shapeRendering("crispEdges") .background("rgba(222, 163, 11 ,.1)") .stroke("rgb(222, 163, 11)"); svg.call(t); d3.select("#hachure rect").style("fill", t.url()) /* la barre */ barre.selectAll(".barre") .data(data) .enter() .filter(e => e.etape == i) .append("rect") .attr("class", function(d) { classe = "barre" if (d.quoi == "sieste") classe += " " + d.quoi return classe }) .attr("fill", d => ((d.quoi != "sieste") ? t.url() : "")) .attr("x", d => x(tps(d.debut))) .attr("width", d => x(tps(d.fin)) - x(tps(d.debut)) + 1) .attr("y", d => 0) .attr("height", d => hauteurbarre) .attr("data-tt", function(d) { if (d.quoi != "sieste") { html = "
" + d.nom; if (d.rabe) { html += "" + d.rabe + ""; } html += "
"; html += "
"; if (d.quoi != "suivre") { html += "KM " + String((etapes[i].distance - d.km).toFixed(1)).replace(".", ",").replace(",0", "") + " – "; } if (d.quoi != "sprint" && d.quoi != "arrivée" && d.quoi != "20km" && d.quoi != "10km" && d.quoi != "pave" && d.quoi != "suivre") { html += "ascension "; } html += dico[d.quoi].trad + "
"; html += ""; html += "
Passage prévu entre " + d.debut.replace(":", " h ") + " et " + d.fin.replace(":", " h ") + "
"; return html; } }); /* on colle le triangle */ barre.selectAll(".triangle") .data(data) .enter() .filter(e => e.etape == i && e.quoi == "sprint") .append("path") .attr("class", "triangle") .attr("d", triangle) .attr("transform", e => "translate(" + (x(tps(e.debut)) + x(tps(e.fin))) / 2 + "," + hauteurbarre + ")"); /* on filtre pour ne garder que les phases où il se passera des trucs */ var datatemp = []; for (const [j, e] of data.entries()) { if (e.etape == i && e.quoi !== "sieste") { datatemp.push(e); e.index = j; } } var heuresTemp = []; barre.selectAll("text") .data(datatemp) .enter() .filter(function(e, j) { if (j == 0) { heuresTemp.push(e); return e; } if (j > 0 && e.index - (datatemp[j - 1].index) > 1) { heuresTemp.push(e); return e; } }) .append("text") .attr("class", "axe passelect") .text((e, j) => ((mobile) ? e.debut : aLaBonneHeure(e.debut))) .attr("transform", e => "translate(" + x(tps(e.debut)) + "," + hauteurbarre * 2.6 + ")"); // on gère l'agenda if (classeenrabe == "") { d3.select("#etape" + i) .append("div") .attr("class", "agendaclic") .append("a") .attr("class", "afficheragenda") .attr("href", "#agenda" + i) .html("Ajouter des rappels à mon calendrier " + doigt); d3.select("#etape" + i) .append("div") .attr("class", "contenant_agenda") .attr("id", "agenda" + i); var agenda = element = document.querySelector("#etape" + i + " .contenant_agenda"), dateTemp = etapes[i].date.split("/"), dateEvenement = dateTemp[2] + "-" + dateTemp[1] + "-" + dateTemp[0]; for (const [j, e] of heuresTemp.entries()) { cal = ``; agenda.innerHTML += cal; } } }; // les événements au clic pour les agendas const show = (e) => { const getHeight = () => { e.style.display = 'block'; const height = e.scrollHeight + 'px'; e.style.display = ''; return height; }; const height = getHeight(); //get natural height e.classList.add('is-visible'); //make element visible e.style.height = height; //update max-height //once the transition is complete, remove inlinie max-height so the content can scale responsively window.setTimeout(() => { e.style.height = ''; }, 180); }; // hide element const hide = (e) => { //give the element a height to change from e.style.height = e.scrollHeight + 'px'; //set height back to 0 window.setTimeout(() => { e.style.height = '0'; }, 1); window.setTimeout(() => { e.classList.remove('is-visible'); }, 180); } const toggle = (e) => { if (e.classList.contains('is-visible')) { hide(e); return; } show(e); }; //listen for click event document.addEventListener('click', event => { if (!event.target.classList.contains('afficheragenda')) return; //Prevent default link behavior event.preventDefault(); const content = document.querySelector(event.target.hash); if (!content) return; toggle(content); }, false); /* on range les divs si les étapes sont passées */ var liste_etapes = document.querySelectorAll('.siesteparetape'); [].slice.call(liste_etapes).sort((a, b) => a.getAttribute('data-rangement') - b.getAttribute('data-rangement')) .forEach(function(ceci) { ceci.parentNode.appendChild(ceci) }); /* le tooltip*/ const isInApp = window.location.href.match(/apps.([a-z]+\-)?lemonde.fr/); tooltip_brt("circle.cote", 2, 14) tooltip_brt("rect.barre:not(.sieste)", 2, -5)
Ähnliche Shots
Nachrichtenarchiv
  • Brexit
    Brexit
    Wie der Brexit ein Volk entzweit hat
    30 Jan 2020
    3
  • Haus des Geldes: Korea
    Haus des Geldes: Korea
    „Haus des Geldes: Korea“ auf Netflix: Kommt das Remake ans Original ran?
    25 Jun 2022
    2
  • Apple iPhone 14
    Apple iPhone 14
    Apple-Event: Gibt es iPhone 14, Apple Watch 8 und AirPods Pro 2 zu sehen?
    6 Sep 2022
    7
  • UN-Sicherheitsrat
    UN-Sicherheitsrat
    Wer gehört nicht zu den fünf ständigen Mitgliedern im UN ...
    6 Mär 2023
    1
  • Hochzeit Ricarda Lang
    Hochzeit Ricarda Lang
    Grünenchefin gab Freund das Jawort: Ricarda Lang hat geheiratet ...
    18 Aug 2024
    2
Die meist populären Shots dieser Woche