{"id":519,"date":"2026-05-31T11:47:13","date_gmt":"2026-05-31T09:47:13","guid":{"rendered":"https:\/\/journaldunpapatriathlete.com\/?page_id=519"},"modified":"2026-10-03T11:36:59","modified_gmt":"2026-10-03T09:36:59","slug":"calculateur","status":"publish","type":"page","link":"https:\/\/journaldunpapatriathlete.com\/index.php\/calculateur\/","title":{"rendered":"Calculateurs D&rsquo;allure"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"519\" class=\"elementor elementor-519\">\n\t\t\t\t<div class=\"elementor-element elementor-element-31b5eb5 e-con e-atomic-element e-div-block-base e-default-div \" data-id=\"31b5eb5\" data-element_type=\"e-div-block\" data-e-type=\"e-div-block\" data-interaction-id=\"31b5eb5\">\n    \t\t\t<p class=\"e-paragraph-base e-default-p\" data-interaction-id=\"911752e\"><\/p>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-0c29c7b e-grid e-con-boxed e-con e-parent\" data-id=\"0c29c7b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2a78f07 elementor-widget elementor-widget-html\" data-id=\"2a78f07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"jpt-tri-calculator\" style=\"max-width:520px;padding:22px;border:1px solid #ddd;border-radius:14px;font-family:Arial;\">\n\n  <h2>Calculateur de temps Triathlon<\/h2>\n\n  <!-- FORMAT -->\n  <label>Format de course<\/label>\n  <select id=\"format\" style=\"width:100%;margin-bottom:12px;\" onchange=\"updateTriFormat()\">\n    <option value=\"XS\">XS (400m \/ 10km \/ 2,5km)<\/option>\n    <option value=\"S\">Sprint (750m \/ 20km \/ 5km)<\/option>\n    <option value=\"M\">Olympique (1,5km \/ 40km \/ 10km)<\/option>\n    <option value=\"L\">Half Ironman (1,9km \/ 90km \/ 21,1km)<\/option>\n    <option value=\"IM\">Ironman (3,8km \/ 180km \/ 42,195km)<\/option>\n    <option value=\"CUSTOM\">Personnalis\u00e9<\/option>\n  <\/select>\n\n  <!-- DISTANCES PERSONNALIS\u00c9ES -->\n  <div id=\"customDistances\" style=\"display:none;margin-bottom:12px;padding:15px;border:1px solid #e5e7eb;border-radius:10px;\">\n\n    <strong style=\"display:block;margin-bottom:12px;\">\n      Distances personnalis\u00e9es\n    <\/strong>\n\n    <label>Natation (m)<\/label>\n    <input\n      id=\"customSwim\"\n      type=\"number\"\n      step=\"1\"\n      min=\"1\"\n      placeholder=\"ex : 1000\"\n      style=\"width:100%;margin-bottom:10px;\"\n    \/>\n\n    <label>V\u00e9lo (km)<\/label>\n    <input\n      id=\"customBike\"\n      type=\"number\"\n      step=\"0.1\"\n      min=\"0.1\"\n      placeholder=\"ex : 50\"\n      style=\"width:100%;margin-bottom:10px;\"\n    \/>\n\n    <label>Course \u00e0 pied (km)<\/label>\n    <input\n      id=\"customRun\"\n      type=\"number\"\n      step=\"0.1\"\n      min=\"0.1\"\n      placeholder=\"ex : 12\"\n      style=\"width:100%;\"\n    \/>\n\n  <\/div>\n\n  <hr>\n\n  <!-- NATATION -->\n  <label>Natation (min\/100m)<\/label>\n  <input\n    id=\"swim\"\n    type=\"text\"\n    placeholder=\"ex : 1:45\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <!-- VELO -->\n  <label>V\u00e9lo (km\/h)<\/label>\n  <input\n    id=\"bike\"\n    type=\"text\"\n    inputmode=\"decimal\"\n    placeholder=\"ex : 36\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <!-- COURSE -->\n  <label>Course \u00e0 pied (min\/km)<\/label>\n  <input\n    id=\"run\"\n    type=\"text\"\n    placeholder=\"ex : 4:30\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <!-- TRANSITIONS -->\n  <label>T1 (min)<\/label>\n  <input\n    id=\"t1\"\n    type=\"number\"\n    step=\"0.1\"\n    min=\"0\"\n    value=\"2\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <label>T2 (min)<\/label>\n  <input\n    id=\"t2\"\n    type=\"number\"\n    step=\"0.1\"\n    min=\"0\"\n    value=\"1.5\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <!-- BOUTONS -->\n  <button\n    class=\"jpt-tri-btn\"\n    onclick=\"calculateTri()\">\n    Calculer la performance\n  <\/button>\n\n  <button\n    class=\"jpt-tri-btn\"\n    onclick=\"resetTri()\">\n    Reset\n  <\/button>\n\n  <div id=\"result\" style=\"margin-top:18px;\"><\/div>\n\n<\/div>\n\n\n<style>\n\n\/* =========================================\n   BOUTONS JPT\n========================================= *\/\n\n#jpt-tri-calculator .jpt-tri-btn {\n  width: 100%;\n  padding: 12px;\n  margin-top: 10px;\n\n  background-color: #BA592E;\n  color: #FFFFFF;\n\n  border: 1px solid #BA592E;\n  border-radius: 8px;\n\n  font-size: 16px;\n  cursor: pointer;\n\n  transition:\n    background-color 0.25s ease,\n    color 0.25s ease,\n    border-color 0.25s ease;\n}\n\n#jpt-tri-calculator .jpt-tri-btn:hover {\n  background-color: #FFFFFF;\n  color: #BA592E;\n  border-color: #BA592E;\n}\n\n<\/style>\n\n\n<script>\n\n\/* =========================================\n   FORMAT PERSONNALIS\u00c9\n========================================= *\/\n\nfunction updateTriFormat() {\n\n  const format = document.getElementById(\"format\").value;\n  const custom = document.getElementById(\"customDistances\");\n\n  custom.style.display =\n    format === \"CUSTOM\" ? \"block\" : \"none\";\n}\n\n\n\/* =========================================\n   CONVERSION ALLURE\n========================================= *\/\n\nfunction toMinutes(pace) {\n\n  if (!pace || !pace.includes(\":\")) {\n    return null;\n  }\n\n  const parts = pace.trim().split(\":\");\n\n  if (parts.length !== 2) {\n    return null;\n  }\n\n  const minutes = Number(parts[0]);\n  const seconds = Number(parts[1]);\n\n  if (\n    !Number.isFinite(minutes) ||\n    !Number.isFinite(seconds) ||\n    minutes < 0 ||\n    seconds < 0 ||\n    seconds >= 60\n  ) {\n    return null;\n  }\n\n  return minutes + seconds \/ 60;\n}\n\n\n\/* =========================================\n   FORMATAGE DU TEMPS\n========================================= *\/\n\nfunction formatTime(min) {\n\n  let totalSeconds = Math.round(min * 60);\n\n  const hours = Math.floor(totalSeconds \/ 3600);\n\n  totalSeconds %= 3600;\n\n  const minutes = Math.floor(totalSeconds \/ 60);\n  const seconds = totalSeconds % 60;\n\n  if (hours > 0) {\n\n    return (\n      hours + \"h \" +\n      String(minutes).padStart(2, \"0\") + \"min \" +\n      String(seconds).padStart(2, \"0\") + \"s\"\n    );\n\n  }\n\n  return (\n    minutes + \"min \" +\n    String(seconds).padStart(2, \"0\") + \"s\"\n  );\n}\n\n\n\/* =========================================\n   PICTOGRAMMES\n========================================= *\/\n\nfunction triIcon(type) {\n\n  const common =\n    'width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" ' +\n    'fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" ' +\n    'stroke-linecap=\"round\" stroke-linejoin=\"round\"';\n\n  if (type === \"swim\") {\n    return `\n      <svg ${common}>\n        <circle cx=\"17\" cy=\"5\" r=\"2\"><\/circle>\n        <path d=\"M4 12c2-2 4-2 6 0s4 2 6 0 4-2 6 0\"><\/path>\n        <path d=\"M2 17c2-2 4-2 6 0s4 2 6 0 4-2 6 0\"><\/path>\n        <path d=\"M10 10l4-3 4 3\"><\/path>\n      <\/svg>\n    `;\n  }\n\n  if (type === \"bike\") {\n    return `\n      <svg ${common}>\n        <circle cx=\"6\" cy=\"17\" r=\"4\"><\/circle>\n        <circle cx=\"18\" cy=\"17\" r=\"4\"><\/circle>\n        <path d=\"M6 17l4-8 4 8h-8\"><\/path>\n        <path d=\"M10 9h4l4 8\"><\/path>\n        <path d=\"M9 6h3\"><\/path>\n      <\/svg>\n    `;\n  }\n\n  if (type === \"run\") {\n    return `\n      <svg ${common}>\n        <circle cx=\"15\" cy=\"4\" r=\"2\"><\/circle>\n        <path d=\"M13 8l-3 4 4 2 2 6\"><\/path>\n        <path d=\"M13 8l4 3 3-1\"><\/path>\n        <path d=\"M10 12l-4 6\"><\/path>\n      <\/svg>\n    `;\n  }\n\n  if (type === \"transition\") {\n    return `\n      <svg ${common}>\n        <path d=\"M7 7h11l-3-3\"><\/path>\n        <path d=\"M17 17H6l3 3\"><\/path>\n      <\/svg>\n    `;\n  }\n\n  if (type === \"total\") {\n    return `\n      <svg ${common}>\n        <circle cx=\"12\" cy=\"13\" r=\"8\"><\/circle>\n        <path d=\"M12 9v4l3 2\"><\/path>\n        <path d=\"M9 2h6\"><\/path>\n      <\/svg>\n    `;\n  }\n\n  return \"\";\n}\n\n\n\/* =========================================\n   CALCUL\n========================================= *\/\n\nfunction calculateTri() {\n\n  const format =\n    document.getElementById(\"format\").value;\n\n  const swimPace =\n    toMinutes(document.getElementById(\"swim\").value);\n\n  const bikeValue =\n    document.getElementById(\"bike\").value.replace(\",\", \".\");\n\n  const bikeSpeed =\n    parseFloat(bikeValue);\n\n  const runPace =\n    toMinutes(document.getElementById(\"run\").value);\n\n  const t1 =\n    parseFloat(document.getElementById(\"t1\").value) || 0;\n\n  const t2 =\n    parseFloat(document.getElementById(\"t2\").value) || 0;\n\n  const result =\n    document.getElementById(\"result\");\n\n\n  \/* VERIFICATION NATATION *\/\n\n  if (swimPace === null || swimPace <= 0) {\n\n    result.innerHTML =\n      \"<strong>Allure natation invalide.<\/strong><br>Exemple : 1:45\";\n\n    return;\n  }\n\n\n  \/* VERIFICATION VELO *\/\n\n  if (!Number.isFinite(bikeSpeed) || bikeSpeed <= 0) {\n\n    result.innerHTML =\n      \"<strong>Vitesse v\u00e9lo invalide.<\/strong><br>Exemple : 36\";\n\n    return;\n  }\n\n\n  \/* VERIFICATION COURSE *\/\n\n  if (runPace === null || runPace <= 0) {\n\n    result.innerHTML =\n      \"<strong>Allure course invalide.<\/strong><br>Exemple : 4:30\";\n\n    return;\n  }\n\n\n  \/* =========================================\n     DISTANCES\n  ========================================= *\/\n\n  let swimMeters = 0;\n  let bikeDist = 0;\n  let runDist = 0;\n\n\n  if (format === \"XS\") {\n\n    swimMeters = 400;\n    bikeDist = 10;\n    runDist = 2.5;\n\n  }\n\n  else if (format === \"S\") {\n\n    swimMeters = 750;\n    bikeDist = 20;\n    runDist = 5;\n\n  }\n\n  else if (format === \"M\") {\n\n    swimMeters = 1500;\n    bikeDist = 40;\n    runDist = 10;\n\n  }\n\n  else if (format === \"L\") {\n\n    swimMeters = 1900;\n    bikeDist = 90;\n    runDist = 21.1;\n\n  }\n\n  else if (format === \"IM\") {\n\n    swimMeters = 3800;\n    bikeDist = 180;\n    runDist = 42.195;\n\n  }\n\n  else if (format === \"CUSTOM\") {\n\n    swimMeters =\n      parseFloat(\n        document.getElementById(\"customSwim\").value\n          .replace(\",\", \".\")\n      );\n\n    bikeDist =\n      parseFloat(\n        document.getElementById(\"customBike\").value\n          .replace(\",\", \".\")\n      );\n\n    runDist =\n      parseFloat(\n        document.getElementById(\"customRun\").value\n          .replace(\",\", \".\")\n      );\n\n    if (\n      !Number.isFinite(swimMeters) ||\n      !Number.isFinite(bikeDist) ||\n      !Number.isFinite(runDist) ||\n      swimMeters <= 0 ||\n      bikeDist <= 0 ||\n      runDist <= 0\n    ) {\n\n      result.innerHTML =\n        \"<strong>Veuillez renseigner les trois distances personnalis\u00e9es.<\/strong>\";\n\n      return;\n    }\n  }\n\n\n  \/* =========================================\n     CALCUL DES TEMPS\n  ========================================= *\/\n\n  const swimTime =\n    (swimMeters \/ 100) * swimPace;\n\n  const bikeTime =\n    (bikeDist \/ bikeSpeed) * 60;\n\n  const runTime =\n    runDist * runPace;\n\n  const transitionTime =\n    t1 + t2;\n\n  const total =\n    swimTime +\n    bikeTime +\n    runTime +\n    transitionTime;\n\n\n  \/* =========================================\n     RESULTAT\n  ========================================= *\/\n\n  result.innerHTML = `\n\n    <h3 style=\"margin-bottom:16px;\">R\u00e9sultat<\/h3>\n\n    <div style=\"color:#334155;\">\n\n      <p style=\"display:flex;align-items:center;gap:10px;\">\n        ${triIcon(\"swim\")}\n        <span>\n          <strong>Natation :<\/strong>\n          ${formatTime(swimTime)}\n        <\/span>\n      <\/p>\n\n      <p style=\"display:flex;align-items:center;gap:10px;\">\n        ${triIcon(\"bike\")}\n        <span>\n          <strong>V\u00e9lo :<\/strong>\n          ${formatTime(bikeTime)}\n        <\/span>\n      <\/p>\n\n      <p style=\"display:flex;align-items:center;gap:10px;\">\n        ${triIcon(\"run\")}\n        <span>\n          <strong>Course :<\/strong>\n          ${formatTime(runTime)}\n        <\/span>\n      <\/p>\n\n      <p style=\"display:flex;align-items:center;gap:10px;\">\n        ${triIcon(\"transition\")}\n        <span>\n          <strong>Transitions :<\/strong>\n          ${formatTime(transitionTime)}\n        <\/span>\n      <\/p>\n\n    <\/div>\n\n    <hr style=\"margin:16px 0;\">\n\n    <div\n      style=\"\n        display:flex;\n        align-items:center;\n        gap:10px;\n        color:#BA592E;\n        font-size:1.15em;\n      \"\n    >\n\n      ${triIcon(\"total\")}\n\n      <strong>\n        Total : ${formatTime(total)}\n      <\/strong>\n\n    <\/div>\n  `;\n}\n\n\n\/* =========================================\n   RESET\n========================================= *\/\n\nfunction resetTri() {\n\n  document.getElementById(\"format\").value = \"S\";\n\n  document.getElementById(\"swim\").value = \"\";\n  document.getElementById(\"bike\").value = \"\";\n  document.getElementById(\"run\").value = \"\";\n\n  document.getElementById(\"t1\").value = 2;\n  document.getElementById(\"t2\").value = 1.5;\n\n  document.getElementById(\"customSwim\").value = \"\";\n  document.getElementById(\"customBike\").value = \"\";\n  document.getElementById(\"customRun\").value = \"\";\n\n  document.getElementById(\"result\").innerHTML = \"\";\n\n  updateTriFormat();\n}\n\n\n\/* INITIALISATION *\/\n\nupdateTriFormat();\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3db5e01 elementor-widget elementor-widget-html\" data-id=\"3db5e01\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"jpt-pace-calculator\" style=\"max-width:420px;padding:20px;border:1px solid #ddd;border-radius:12px;font-family:Arial;\">\n\n  <h3>Calculateur de temps et d'allure<\/h3>\n\n  <label>Mode<\/label>\n  <select id=\"mode2\" style=\"width:100%;margin-bottom:10px;\" onchange=\"updatePlaceholder2()\">\n    <option value=\"time\">Calculer le temps<\/option>\n    <option value=\"pace\">Calculer l'allure \/ vitesse<\/option>\n  <\/select>\n\n  <label>Discipline<\/label>\n  <select id=\"discipline2\" style=\"width:100%;margin-bottom:10px;\" onchange=\"updatePlaceholder2()\">\n    <option value=\"run\">Course \u00e0 pied (min\/km)<\/option>\n    <option value=\"bike\">V\u00e9lo (km\/h)<\/option>\n    <option value=\"swim\">Natation (min\/100m)<\/option>\n  <\/select>\n\n  <label>Distance<\/label>\n  <input\n    id=\"distance2\"\n    type=\"number\"\n    step=\"0.1\"\n    min=\"0\"\n    placeholder=\"ex : 10\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <label>Performance<\/label>\n  <input\n    id=\"performance2\"\n    type=\"text\"\n    placeholder=\"ex : 4:30\"\n    style=\"width:100%;margin-bottom:10px;\"\n  \/>\n\n  <!-- TEMPS DE PASSAGE -->\n  <label class=\"jpt-splits-option\">\n    <input type=\"checkbox\" id=\"showSplits2\">\n    <span>Afficher les temps de passage<\/span>\n  <\/label>\n\n  <button\n    class=\"jpt-pace-btn\"\n    onclick=\"calculate2()\">\n    Calculer\n  <\/button>\n\n  <button\n    class=\"jpt-pace-btn\"\n    onclick=\"resetForm2()\">\n    Reset\n  <\/button>\n\n  <div id=\"result2\" style=\"margin-top:15px;\"><\/div>\n\n<\/div>\n\n\n<style>\n\n\/* =========================\n   BOUTONS JPT\n========================= *\/\n\n#jpt-pace-calculator .jpt-pace-btn {\n  width: 100%;\n  padding: 10px;\n  margin-bottom: 10px;\n\n  background-color: #BA592E;\n  color: #FFFFFF;\n\n  border: 1px solid #BA592E;\n  border-radius: 8px;\n\n  font-size: 16px;\n  cursor: pointer;\n\n  transition:\n    background-color 0.25s ease,\n    color 0.25s ease,\n    border-color 0.25s ease;\n}\n\n#jpt-pace-calculator .jpt-pace-btn:hover {\n  background-color: #FFFFFF;\n  color: #BA592E;\n  border-color: #BA592E;\n}\n\n\n\/* =========================\n   OPTION TEMPS DE PASSAGE\n========================= *\/\n\n#jpt-pace-calculator .jpt-splits-option {\n  display: flex;\n  align-items: center;\n  gap: 9px;\n  margin: 4px 0 16px 0;\n  cursor: pointer;\n  font-size: 14px;\n}\n\n#jpt-pace-calculator .jpt-splits-option input {\n  width: 18px;\n  height: 18px;\n  margin: 0;\n  cursor: pointer;\n\n  accent-color: #BA592E;\n}\n\n\n\/* =========================\n   R\u00c9SULTAT\n========================= *\/\n\n#jpt-pace-calculator .jpt-main-result {\n  margin-top: 15px;\n  font-size: 18px;\n  font-weight: 700;\n}\n\n\n\/* =========================\n   TEMPS DE PASSAGE\n========================= *\/\n\n#jpt-pace-calculator .jpt-splits {\n  margin-top: 18px;\n  padding-top: 15px;\n  border-top: 1px solid #ddd;\n}\n\n#jpt-pace-calculator .jpt-splits-title {\n  margin: 0 0 10px 0;\n  font-size: 16px;\n  font-weight: 700;\n  color: #1C244B;\n}\n\n#jpt-pace-calculator .jpt-split-row {\n  display: flex;\n  justify-content: space-between;\n  gap: 15px;\n\n  padding: 6px 0;\n  border-bottom: 1px solid #eee;\n\n  font-size: 14px;\n}\n\n#jpt-pace-calculator .jpt-split-time {\n  font-weight: 600;\n  white-space: nowrap;\n  color: #BA592E;\n}\n\n<\/style>\n\n\n<script>\n\n\/* =========================\n   MISE \u00c0 JOUR DES EXEMPLES\n========================= *\/\n\nfunction updatePlaceholder2() {\n\n  const mode = document.getElementById(\"mode2\").value;\n  const discipline = document.getElementById(\"discipline2\").value;\n  const input = document.getElementById(\"performance2\");\n\n  if (mode === \"time\") {\n\n    if (discipline === \"run\") {\n      input.placeholder = \"4:30 (min\/km)\";\n    }\n\n    else if (discipline === \"swim\") {\n      input.placeholder = \"1:40 (min\/100m)\";\n    }\n\n    else {\n      input.placeholder = \"35 (km\/h)\";\n    }\n\n  }\n\n  else {\n\n    input.placeholder = \"39:59 ou 1:30:00\";\n\n  }\n}\n\n\n\/* =========================\n   CONVERSION D'UN TEMPS\n========================= *\/\n\nfunction parseTime2(value) {\n\n  const parts = value.trim().split(\":\");\n\n  if (parts.length === 2) {\n\n    const minutes = Number(parts[0]);\n    const seconds = Number(parts[1]);\n\n    if (\n      !Number.isFinite(minutes) ||\n      !Number.isFinite(seconds) ||\n      minutes < 0 ||\n      seconds < 0 ||\n      seconds >= 60\n    ) {\n      return null;\n    }\n\n    return minutes + seconds \/ 60;\n  }\n\n  if (parts.length === 3) {\n\n    const hours = Number(parts[0]);\n    const minutes = Number(parts[1]);\n    const seconds = Number(parts[2]);\n\n    if (\n      !Number.isFinite(hours) ||\n      !Number.isFinite(minutes) ||\n      !Number.isFinite(seconds) ||\n      hours < 0 ||\n      minutes < 0 ||\n      minutes >= 60 ||\n      seconds < 0 ||\n      seconds >= 60\n    ) {\n      return null;\n    }\n\n    return hours * 60 + minutes + seconds \/ 60;\n  }\n\n  return null;\n}\n\n\n\/* =========================\n   FORMATAGE ALLURE\n========================= *\/\n\nfunction formatPace2(pace) {\n\n  let minutes = Math.floor(pace);\n  let seconds = Math.round((pace - minutes) * 60);\n\n  if (seconds === 60) {\n    minutes += 1;\n    seconds = 0;\n  }\n\n  return minutes + \":\" + String(seconds).padStart(2, \"0\");\n}\n\n\n\/* =========================\n   FORMATAGE TEMPS TOTAL\n========================= *\/\n\nfunction formatTotalTime2(totalMinutes) {\n\n  let totalSeconds = Math.round(totalMinutes * 60);\n\n  const hours = Math.floor(totalSeconds \/ 3600);\n\n  totalSeconds %= 3600;\n\n  const minutes = Math.floor(totalSeconds \/ 60);\n  const seconds = totalSeconds % 60;\n\n  if (hours > 0) {\n\n    return (\n      hours + \"h \" +\n      String(minutes).padStart(2, \"0\") + \"min \" +\n      String(seconds).padStart(2, \"0\") + \"s\"\n    );\n\n  }\n\n  return (\n    minutes + \"min \" +\n    String(seconds).padStart(2, \"0\") + \"s\"\n  );\n}\n\n\n\/* =========================\n   CR\u00c9ATION DES TEMPS\n   DE PASSAGE\n========================= *\/\n\nfunction createSplits2(discipline, distance, totalMinutes) {\n\n  let interval;\n  let unit;\n\n  if (discipline === \"run\") {\n    interval = 1;\n    unit = \"km\";\n  }\n\n  else if (discipline === \"bike\") {\n    interval = 5;\n    unit = \"km\";\n  }\n\n  else {\n    interval = 100;\n    unit = \"m\";\n  }\n\n\n  let html = `\n    <div class=\"jpt-splits\">\n      <div class=\"jpt-splits-title\">\n        Temps de passage\n      <\/div>\n  `;\n\n\n  \/* NATATION *\/\n\n  if (discipline === \"swim\") {\n\n    for (let d = interval; d <= distance + 0.0001; d += interval) {\n\n      const passageTime =\n        totalMinutes * (d \/ distance);\n\n      html += `\n        <div class=\"jpt-split-row\">\n          <span>${d} ${unit}<\/span>\n          <span class=\"jpt-split-time\">\n            ${formatTotalTime2(passageTime)}\n          <\/span>\n        <\/div>\n      `;\n    }\n\n\n    \/* Distance finale non multiple de 100 m *\/\n\n    const lastFull =\n      Math.floor(distance \/ interval) * interval;\n\n    if (Math.abs(distance - lastFull) > 0.001) {\n\n      html += `\n        <div class=\"jpt-split-row\">\n          <span>${distance} ${unit}<\/span>\n          <span class=\"jpt-split-time\">\n            ${formatTotalTime2(totalMinutes)}\n          <\/span>\n        <\/div>\n      `;\n    }\n\n  }\n\n\n  \/* COURSE \/ V\u00c9LO *\/\n\n  else {\n\n    for (let d = interval; d <= distance + 0.0001; d += interval) {\n\n      const passageTime =\n        totalMinutes * (d \/ distance);\n\n      html += `\n        <div class=\"jpt-split-row\">\n          <span>${d} ${unit}<\/span>\n          <span class=\"jpt-split-time\">\n            ${formatTotalTime2(passageTime)}\n          <\/span>\n        <\/div>\n      `;\n    }\n\n\n    \/* Distance finale non multiple *\/\n\n    const lastFull =\n      Math.floor(distance \/ interval) * interval;\n\n    if (Math.abs(distance - lastFull) > 0.001) {\n\n      const displayDistance =\n        Number(distance.toFixed(2));\n\n      html += `\n        <div class=\"jpt-split-row\">\n          <span>${displayDistance} ${unit}<\/span>\n          <span class=\"jpt-split-time\">\n            ${formatTotalTime2(totalMinutes)}\n          <\/span>\n        <\/div>\n      `;\n    }\n\n  }\n\n\n  html += `<\/div>`;\n\n  return html;\n}\n\n\n\/* =========================\n   AFFICHAGE DU R\u00c9SULTAT\n========================= *\/\n\nfunction displayResult2(mainText, discipline, distance, totalMinutes) {\n\n  const result = document.getElementById(\"result2\");\n\n  let html = `\n    <div class=\"jpt-main-result\">\n      ${mainText}\n    <\/div>\n  `;\n\n  if (document.getElementById(\"showSplits2\").checked) {\n\n    html += createSplits2(\n      discipline,\n      distance,\n      totalMinutes\n    );\n\n  }\n\n  result.innerHTML = html;\n}\n\n\n\/* =========================\n   CALCUL PRINCIPAL\n========================= *\/\n\nfunction calculate2() {\n\n  const mode = document.getElementById(\"mode2\").value;\n  const discipline = document.getElementById(\"discipline2\").value;\n\n  const distance = parseFloat(\n    document.getElementById(\"distance2\").value\n  );\n\n  const perf = document\n    .getElementById(\"performance2\")\n    .value\n    .trim();\n\n  const result = document.getElementById(\"result2\");\n\n\n  if (!Number.isFinite(distance) || distance <= 0 || perf === \"\") {\n\n    result.innerText =\n      \"Veuillez remplir correctement tous les champs.\";\n\n    return;\n  }\n\n\n  \/* =========================\n     MODE : CALCULER LE TEMPS\n  ========================= *\/\n\n  if (mode === \"time\") {\n\n    let totalMinutes;\n\n\n    if (discipline === \"run\" || discipline === \"swim\") {\n\n      const pace = parseTime2(perf);\n\n      if (pace === null || pace <= 0) {\n\n        result.innerText =\n          \"Format d'allure invalide. Exemple : 4:30\";\n\n        return;\n      }\n\n\n      if (discipline === \"run\") {\n\n        totalMinutes = distance * pace;\n\n      }\n\n      else {\n\n        totalMinutes = (distance \/ 100) * pace;\n\n      }\n\n    }\n\n\n    \/* V\u00c9LO *\/\n\n    else {\n\n      const speed = parseFloat(\n        perf.replace(\",\", \".\")\n      );\n\n      if (!Number.isFinite(speed) || speed <= 0) {\n\n        result.innerText =\n          \"Veuillez saisir une vitesse valide en km\/h.\";\n\n        return;\n      }\n\n      totalMinutes = (distance \/ speed) * 60;\n\n    }\n\n\n    displayResult2(\n      \"Temps estim\u00e9 : \" + formatTotalTime2(totalMinutes),\n      discipline,\n      distance,\n      totalMinutes\n    );\n\n    return;\n  }\n\n\n  \/* =========================\n     MODE : CALCULER ALLURE\n     OU VITESSE\n  ========================= *\/\n\n  const totalMinutes = parseTime2(perf);\n\n  if (totalMinutes === null || totalMinutes <= 0) {\n\n    result.innerText =\n      \"Format de temps invalide. Exemple : 39:59 ou 1:30:00\";\n\n    return;\n  }\n\n\n  \/* COURSE \u00c0 PIED *\/\n\n  if (discipline === \"run\") {\n\n    const pace = totalMinutes \/ distance;\n\n    displayResult2(\n      \"Allure cible : \" +\n      formatPace2(pace) +\n      \" \/km\",\n      discipline,\n      distance,\n      totalMinutes\n    );\n\n  }\n\n\n  \/* NATATION *\/\n\n  else if (discipline === \"swim\") {\n\n    const pace =\n      totalMinutes \/ (distance \/ 100);\n\n    displayResult2(\n      \"Allure cible : \" +\n      formatPace2(pace) +\n      \" \/100m\",\n      discipline,\n      distance,\n      totalMinutes\n    );\n\n  }\n\n\n  \/* V\u00c9LO *\/\n\n  else {\n\n    const speed =\n      distance \/ (totalMinutes \/ 60);\n\n    displayResult2(\n      \"Vitesse cible : \" +\n      speed.toFixed(1) +\n      \" km\/h\",\n      discipline,\n      distance,\n      totalMinutes\n    );\n\n  }\n}\n\n\n\/* =========================\n   RESET\n========================= *\/\n\nfunction resetForm2() {\n\n  document.getElementById(\"distance2\").value = \"\";\n  document.getElementById(\"performance2\").value = \"\";\n  document.getElementById(\"result2\").innerHTML = \"\";\n\n  document.getElementById(\"mode2\").value = \"time\";\n  document.getElementById(\"discipline2\").value = \"run\";\n\n  document.getElementById(\"showSplits2\").checked = false;\n\n  updatePlaceholder2();\n}\n\n\n\/* INITIALISATION *\/\n\nupdatePlaceholder2();\n\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cbee88c e-grid e-con-boxed e-con e-parent\" data-id=\"cbee88c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30de914 elementor-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"30de914\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/journaldunpapatriathlete.com\/index.php\/category\/chronique\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Chronique compl\u00e8te<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b9a7b7 elementor-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"3b9a7b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/journaldunpapatriathlete.com\/index.php\/category\/tips\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Tous les Tips<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3dab68f e-con e-atomic-element e-flexbox-base e-default-div e-e5dd365 \" data-id=\"3dab68f\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"3dab68f\">\n    <div class=\"elementor-element elementor-element-2e74075 e-con e-atomic-element e-flexbox-base e-default-div e-2e74075-c4c819d \" data-id=\"2e74075\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2e74075\">\n    <div class=\"elementor-element elementor-element-fe20356 e-con e-atomic-element e-flexbox-base e-default-div e-fe20356-4796d76 \" data-id=\"fe20356\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"fe20356\">\n    \t\t\t<h2 data-interaction-id=\"2081d12\" class=\"e-2081d12-669db03 e-heading-base e-default-h2\">RETROUVEZ<\/h2>\n\t\t\t\t\t<h2 data-interaction-id=\"6ecbe1f\" class=\"e-6ecbe1f-728cf3d e-heading-base e-default-h2\">LE JOURNAL D\u2019UN PAPA TRIATHL\u00c8TE<\/h2>\n\t\t\t\t\t<h2 data-interaction-id=\"e0b6c96\" class=\"e-e0b6c96-ef1aac2 e-heading-base e-default-h2\">aussi sur<\/h2>\n\t\t<div class=\"elementor-element elementor-element-7635d7b e-con e-atomic-element e-flexbox-base e-default-div e-7635d7b-590caa0 \" data-id=\"7635d7b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7635d7b\">\n    <div class=\"elementor-element elementor-element-ce99009 e-con e-atomic-element e-flexbox-base e-default-div e-ce99009-fdb5d31 \" data-id=\"ce99009\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ce99009\">\n    \t\t<div class=\"elementor-element elementor-element-bc1b9ba elementor-align-left elementor-widget elementor-widget-button\" data-id=\"bc1b9ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.youtube.com\/@JPT-JournaldunPapaTriathl%C3%A8te\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-youtube\" viewBox=\"0 0 576 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-16b052b elementor-widget elementor-widget-heading\" data-id=\"16b052b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Youtube<\/h2>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-89f1c5d e-con e-atomic-element e-flexbox-base e-default-div e-89f1c5d-0c1a575 \" data-id=\"89f1c5d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"89f1c5d\">\n    \t\t<div class=\"elementor-element elementor-element-405e786 elementor-align-left elementor-widget elementor-widget-button\" data-id=\"405e786\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.instagram.com\/jpt_journaldunpapatriathlete\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg class=\"ekit-svg-icon icon-instagram-1\" viewBox=\"0 0 32 32\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.969 9.408c-0.075-1.7-0.35-2.869-0.744-3.882-0.406-1.075-1.031-2.038-1.85-2.838-0.8-0.813-1.769-1.444-2.832-1.844-1.019-0.394-2.182-0.669-3.882-0.744-1.713-0.081-2.257-0.1-6.601-0.1s-4.888 0.019-6.595 0.094c-1.7 0.075-2.869 0.35-3.882 0.744-1.075 0.406-2.038 1.031-2.838 1.85-0.813 0.8-1.444 1.769-1.844 2.832-0.394 1.019-0.669 2.182-0.744 3.882-0.081 1.713-0.1 2.257-0.1 6.601s0.019 4.888 0.094 6.595c0.075 1.7 0.35 2.869 0.744 3.882 0.406 1.075 1.038 2.038 1.85 2.838 0.8 0.813 1.769 1.444 2.832 1.844 1.019 0.394 2.182 0.669 3.882 0.744 1.706 0.075 2.25 0.094 6.595 0.094s4.888-0.019 6.595-0.094c1.7-0.075 2.869-0.35 3.882-0.744 2.151-0.831 3.851-2.532 4.682-4.682 0.394-1.019 0.669-2.182 0.744-3.882 0.075-1.707 0.094-2.25 0.094-6.595s-0.006-4.888-0.081-6.595zM29.087 22.473c-0.069 1.563-0.331 2.407-0.55 2.969-0.538 1.394-1.644 2.5-3.038 3.038-0.563 0.219-1.413 0.481-2.969 0.55-1.688 0.075-2.194 0.094-6.464 0.094s-4.782-0.019-6.464-0.094c-1.563-0.069-2.407-0.331-2.969-0.55-0.694-0.256-1.325-0.663-1.838-1.194-0.531-0.519-0.938-1.144-1.194-1.838-0.219-0.563-0.481-1.413-0.55-2.969-0.075-1.688-0.094-2.194-0.094-6.464s0.019-4.782 0.094-6.464c0.069-1.563 0.331-2.407 0.55-2.969 0.256-0.694 0.663-1.325 1.2-1.838 0.519-0.531 1.144-0.938 1.838-1.194 0.563-0.219 1.413-0.481 2.969-0.55 1.688-0.075 2.194-0.094 6.464-0.094 4.276 0 4.782 0.019 6.464 0.094 1.563 0.069 2.407 0.331 2.969 0.55 0.694 0.256 1.325 0.662 1.838 1.194 0.531 0.519 0.938 1.144 1.194 1.838 0.219 0.563 0.481 1.413 0.55 2.969 0.075 1.688 0.094 2.194 0.094 6.464s-0.019 4.77-0.094 6.458z\"><\/path><path d=\"M16.059 7.783c-4.538 0-8.22 3.682-8.22 8.22s3.682 8.22 8.22 8.22c4.538 0 8.22-3.682 8.22-8.22s-3.682-8.22-8.22-8.22zM16.059 21.335c-2.944 0-5.332-2.388-5.332-5.332s2.388-5.332 5.332-5.332c2.944 0 5.332 2.388 5.332 5.332s-2.388 5.332-5.332 5.332z\"><\/path><path d=\"M26.524 7.458c0 1.060-0.859 1.919-1.919 1.919s-1.919-0.859-1.919-1.919c0-1.060 0.859-1.919 1.919-1.919s1.919 0.859 1.919 1.919z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ccc8357 elementor-widget elementor-widget-heading\" data-id=\"ccc8357\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">instagram<\/h2>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-c0cd2c5 e-con e-atomic-element e-flexbox-base e-default-div e-c0cd2c5-3d18e5a \" data-id=\"c0cd2c5\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c0cd2c5\">\n    \t\t<div class=\"elementor-element elementor-element-bb9ed14 elementor-align-left elementor-widget elementor-widget-button\" data-id=\"bb9ed14\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.strava.com\/athletes\/26556387\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-strava\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-50f38bc elementor-widget elementor-widget-heading\" data-id=\"50f38bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">strava<\/h2>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<\/div>\n<div class=\"elementor-element elementor-element-368c84b e-con e-atomic-element e-flexbox-base e-default-div e-3331e70 \" data-id=\"368c84b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"368c84b\">\n    <div class=\"elementor-element elementor-element-de9d2fa e-con-full e-flex e-con e-parent\" data-id=\"de9d2fa\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-34fc62b e-con-full e-flex e-con e-child\" data-id=\"34fc62b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8e5b1c4 elementor-widget elementor-widget-heading\" data-id=\"8e5b1c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A Propos<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9ce582 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"f9ce582\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Raconter, Progresser, Ensemble<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89bdf16 elementor-widget elementor-widget-text-editor\" data-id=\"89bdf16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Positiver et trouver des solutions pour agir plut\u00f4t que de se sentir perdu ou d\u00e9pass\u00e9 par le manque de motivation et, surtout, par le manque d\u2019organisation.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bb3bf2 elementor-invisible elementor-widget elementor-widget-button\" data-id=\"7bb3bf2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/journaldunpapatriathlete.com\/index.php\/a-propos\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Article complet<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4285b3e e-con-full e-flex e-con e-child\" data-id=\"4285b3e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2062d9b elementor-widget elementor-widget-image\" data-id=\"2062d9b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"768\" height=\"499\" src=\"https:\/\/journaldunpapatriathlete.com\/wp-content\/uploads\/2026\/05\/cropped-51e67c3c-7d10-4566-8d18-1b8b86c8eda5-115x75.png\" class=\"attachment-medium_large size-medium_large wp-image-94\" alt=\"\" srcset=\"https:\/\/journaldunpapatriathlete.com\/wp-content\/uploads\/2026\/05\/cropped-51e67c3c-7d10-4566-8d18-1b8b86c8eda5-768x499.png 768w, https:\/\/journaldunpapatriathlete.com\/wp-content\/uploads\/2026\/05\/cropped-51e67c3c-7d10-4566-8d18-1b8b86c8eda5-300x195.png 300w, https:\/\/journaldunpapatriathlete.com\/wp-content\/uploads\/2026\/05\/cropped-51e67c3c-7d10-4566-8d18-1b8b86c8eda5-1024x666.png 1024w, https:\/\/journaldunpapatriathlete.com\/wp-content\/uploads\/2026\/05\/cropped-51e67c3c-7d10-4566-8d18-1b8b86c8eda5-115x75.png 115w, https:\/\/journaldunpapatriathlete.com\/wp-content\/uploads\/2026\/05\/cropped-51e67c3c-7d10-4566-8d18-1b8b86c8eda5.png 1254w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Calculateur de temps Triathlon Format de course XS (400m \/ 10km \/ 2,5km)Sprint (750m \/ 20km \/ 5km)Olympique (1,5km \/ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_eb_attr":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-519","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/pages\/519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/comments?post=519"}],"version-history":[{"count":86,"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/pages\/519\/revisions"}],"predecessor-version":[{"id":1332,"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/pages\/519\/revisions\/1332"}],"wp:attachment":[{"href":"https:\/\/journaldunpapatriathlete.com\/index.php\/wp-json\/wp\/v2\/media?parent=519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}