{"id":114,"date":"2025-04-15T23:05:25","date_gmt":"2025-04-15T21:05:25","guid":{"rendered":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/?page_id=114"},"modified":"2026-06-30T14:35:53","modified_gmt":"2026-06-30T12:35:53","slug":"ergebnisse","status":"publish","type":"page","link":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/ergebnisse\/","title":{"rendered":"Zieldurchgangsliste"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"114\" class=\"elementor elementor-114\">\n\t\t\t\t<div class=\"elementor-element elementor-element-48c2273 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"48c2273\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc6239a elementor-widget elementor-widget-html\" data-id=\"dc6239a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>Zielliste Mittwochsregatta<\/title>\n  <style>\n    body {\n      font-family: 'Segoe UI', sans-serif;\n      margin: 0;\n      padding: 20px;\n      background: #f7f9fc;\n      color: #333;\n    }\n\n    h2, h3 {\n      color: #005577;\n    }\n\n    form {\n      max-width: 800px;\n      margin: auto;\n      background: #fff;\n      padding: 20px;\n      border-radius: 12px;\n      box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n    }\n\n    .form-step {\n      margin-bottom: 30px;\n    }\n\n    label {\n      display: block;\n      margin-bottom: 15px;\n    }\n\n    input, select, textarea {\n      padding: 8px 10px;\n      margin-top: 5px;\n      border-radius: 6px;\n      border: 1px solid #ccc;\n      width: 100%;\n      box-sizing: border-box;\n      font-family: inherit;\n    }\n\n    table {\n      width: 100%;\n      border-collapse: collapse;\n      margin-top: 10px;\n    }\n\n    th, td {\n      border: 1px solid #ccc;\n      padding: 8px;\n      text-align: left;\n    }\n\n    th {\n      background-color: #eef2f7;\n    }\n\n    .button-group {\n      margin-top: 20px;\n    }\n\n    button {\n      padding: 10px 16px;\n      background: #007BBA;\n      color: white;\n      border: none;\n      border-radius: 6px;\n      cursor: pointer;\n      transition: background 0.2s ease;\n    }\n\n    button:hover {\n      background: #005f8d;\n    }\n\n    .secondary-button {\n      background: #e0e0e0;\n      color: #333;\n    }\n\n    .secondary-button:hover {\n      background: #ccc;\n    }\n\n    .platzierung-card {\n      background: #f0f4f8;\n      border: 1px solid #cbd5e0;\n      border-radius: 8px;\n      padding: 10px 15px;\n      margin-bottom: 10px;\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      flex-wrap: wrap;\n    }\n\n    .platzierung-card input {\n      flex: 1 1 30%;\n      margin: 0;\n    }\n\n    .platzierung-card label {\n      flex: 1 1 100%;\n      margin-bottom: 8px;\n      font-weight: bold;\n    }\n\n    .platzierung-card .remove-btn {\n      background: #d9534f;\n      color: white;\n      border: none;\n      padding: 8px 12px;\n      border-radius: 6px;\n      cursor: pointer;\n      flex-shrink: 0;\n    }\n\n    .platzierung-card .remove-btn:hover {\n      background: #b52b27;\n    }\n\n    .hidden {\n      display: none;\n    }\n  <\/style>\n<\/head>\n<body>\n\n<form id=\"regattaForm\">\n  <div class=\"form-step\" id=\"step1\">\n    <h2>Regattadaten<\/h2>\n    <label>Datum: <input type=\"date\" name=\"datum\" required><\/label>\n    <label>Bahn:\n      <select name=\"bahn\" required>\n        <option value=\"\">Bitte w\u00e4hlen<\/option>\n        <option value=\"L\">L<\/option>\n        <option value=\"RT\">RT<\/option>\n        <option value=\"PHK\">PHK<\/option>\n        <option value=\"N\">N<\/option>\n        <option value=\"T1\">T1<\/option>\n        <option value=\"T4\">T4<\/option>\n      <\/select>\n    <\/label>\n    <label>Wind (Richtung\/St\u00e4rke): <input type=\"text\" name=\"wind\" placeholder=\"z.\u202fB. NO 3-4\" required><\/label>\n    <label>Uhrzeit erster Zieleinlauf: <input type=\"time\" name=\"ersteZeit\" required><\/label>\n    <div class=\"button-group\">\n      <button type=\"button\" onclick=\"nextStep(1)\">Weiter<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-step hidden\" id=\"step2\">\n    <h2>Platzierungen<\/h2>\n    <div id=\"platzierungen\"><\/div>\n    <div class=\"button-group\">\n      <button type=\"button\" onclick=\"addPlatzierung()\">+ Platzierung<\/button>\n      <button type=\"button\" onclick=\"addPlatzierung(true)\">+ DNF<\/button>\n    <\/div>\n    <div class=\"button-group\">\n      <button type=\"button\" class=\"secondary-button\" onclick=\"prevStep(2)\">Zur\u00fcck<\/button>\n      <button type=\"button\" onclick=\"nextStep(2)\">Weiter<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-step hidden\" id=\"step3\">\n    <h2>Zus\u00e4tzliche Informationen<\/h2>\n    <label>Uhrzeit letzter Zieleinlauf: <input type=\"time\" name=\"letzteZeit\" required><\/label>\n    <label>Weitere Hinweise oder Erg\u00e4nzungen:\n      <textarea name=\"hinweise\" rows=\"4\"><\/textarea>\n    <\/label>\n    <div class=\"button-group\">\n      <button type=\"button\" class=\"secondary-button\" onclick=\"prevStep(3)\">Zur\u00fcck<\/button>\n      <button type=\"button\" onclick=\"nextStep(3)\">Weiter<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"form-step hidden\" id=\"step4\">\n    <h2>Zusammenfassung<\/h2>\n    <h3>Regattadaten<\/h3>\n    <p><strong>Datum:<\/strong> <span id=\"summary_datum\"><\/span><\/p>\n    <p><strong>Bahn:<\/strong> <span id=\"summary_bahn\"><\/span><\/p>\n    <p><strong>Wind:<\/strong> <span id=\"summary_wind\"><\/span><\/p>\n    <p><strong>Uhrzeit erster Zieleinlauf:<\/strong> <span id=\"summary_ersteZeit\"><\/span><\/p>\n    <p><strong>Uhrzeit letzter Zieleinlauf:<\/strong> <span id=\"summary_letzteZeit\"><\/span><\/p>\n    <p><strong>Hinweise:<\/strong> <span id=\"summary_hinweise\"><\/span><\/p>\n    <p><strong>Teilnehmerzahl:<\/strong> <span id=\"summary_teilnehmer\"><\/span><\/p>\n    <h3>Platzierungen<\/h3>\n    <table id=\"zusammenfassung\"><\/table>\n\n    <div style=\"margin: 20px 0;\">\n      <label style=\"display: flex; justify-content: space-between; align-items: center;\">\n        <span style=\"font-weight: bold;\">Hiermit best\u00e4tige ich, dass alle Angaben vollst\u00e4ndig und korrekt sind.<\/span>\n        <input type=\"checkbox\" required>\n      <\/label>\n    <\/div>\n\n    <div class=\"button-group\">\n      <button type=\"button\" class=\"secondary-button\" onclick=\"prevStep(4)\">Zur\u00fcck<\/button>\n      <button type=\"submit\">Absenden<\/button>\n    <\/div>\n  <\/div>\n<\/form>\n\n<div id=\"loader\" class=\"hidden\" style=\"text-align: center; margin-top: 40px; font-weight: bold;\">\n  Bitte warten ...\n<\/div>\n\n<div class=\"form-step hidden\" id=\"confirmation\">\n  <h2>Vielen Dank!<\/h2>\n  <p>Die Regattadaten wurden erfolgreich \u00fcbermittelt.<\/p>\n<\/div>\n\n<datalist id=\"bootList\"><\/datalist>\n\n<script>\n  const schiffe = {\n  2: \"Unico\",\n  4: \"Snoopy\",\n  5: \"Lille\u00d6\",\n  6: \"Athina\",\n  7: \"Specktakel\",\n  8: \"Neugier\",\n  9: \"Strixx\",\n  10: \"Kalle Theodor\",\n  11: \"North Star\",\n  12: \"Just 4 Finn\",\n  13: \"T\u00e4rna\",\n  14: \"Hyggelx\",\n  16: \"he geiht\",\n  17: \"Cian\",\n  19: \"Tortue\",\n  20: \"Topic\",\n  21: \"Apollonia\",\n  23: \"`t waere Jacobje\",\n  24: \"NoWelle\",\n  26: \"Molli\",\n  27: \"Meraki\",\n  28: \"Zwerver\",\n  29: \"Svala\",\n  30: \"Lucky 5\",\n  31: \"Libert\u00e9\",\n  32: \"Viva\",\n  33: \"Troll\",\n  35: \"Uminoko\",\n  37: \"Lina\",\n  38: \"Isabella\",\n  39: \"Jole\",\n  40: \"Tuulikki\",\n  41: \"Santa Paula\",\n  42: \"NIC 4\",\n  43: \"Culatra\",\n  45: \"Tumla\",\n  46: \"Pearl\",\n  47: \"Gargamel\",\n  51: \"Esperanto 2\",\n  52: \"Nicoline\",\n  54: \"Piccolo\",\n  55: \"Venturi 2\",\n  57: \"Limbo\",\n  58: \"reon\",\n  59: \"Corina\",\n  60: \"Lajoa\",\n  61: \"Cardom 3\",\n  62: \"Lupo i\u00b4ll be back\",\n  64: \"peanutx\",\n  65: \"Au weia\",\n  66: \"Blues\",\n  67: \"Karuma\",\n  68: \"halbtrocken\",\n  69: \"Xora\",\n  70: \"JoJo\",\n  71: \"Luise\",\n  72: \"Bottle imp\",\n  73: \"Entlein\",\n  74: \"Elle est belle\",\n  75: \"Sommerwind\",\n  76: \"Tomte\",\n  77: \"Windspiel\",\n  79: \"Strandkind\",\n  81: \"Moana\",\n  82: \"Vertigo Express\",\n  83: \"Spatz\",\n  84: \"Safina\",\n  85: \"Nobile\",\n  86: \"Kuini\",\n  87: \"Lillefix\",\n  92: \"Kismet\",\n  94: \"One Minit\",\n  96: \"Ran\",\n  98: \"Xavante\",\n  100: \"Handbreite\",\n  101: \"Alfa\",\n  102: \"Anne\",\n  103: \"Aki\",\n  104: \"Peregrina\",\n  105: \"Westwind\",\n  107: \"Fay\",\n  109: \"Jolie Brise\",\n  111: \"Gast\"\n};\n\n  const datalist = document.getElementById(\"bootList\");\n  [...new Set(Object.values(schiffe))].forEach(name => {\n    const opt = document.createElement(\"option\");\n    opt.value = name;\n    datalist.appendChild(opt);\n  });\n\n  const platzDiv = document.getElementById(\"platzierungen\");\n  let platzIndex = 1;\n\n  function addPlatzierung(isDNF = false) {\n    const div = document.createElement(\"div\");\n    div.className = \"platzierung-card\";\n    div.dataset.index = platzIndex;\n\n    div.innerHTML = `\n      <label>${isDNF ? 'DNF' : platzIndex + '. Platz'}<\/label>\n      <input list=\"bootList\" name=\"bootname_${platzIndex}\" placeholder=\"Bootsname\" oninput=\"syncStartnummer(${platzIndex})\">\n      <input type=\"number\" name=\"startnummer_${platzIndex}\" placeholder=\"Startnummer\" oninput=\"syncBootname(${platzIndex})\">\n      <input type=\"hidden\" name=\"platz_typ_${platzIndex}\" value=\"${isDNF ? 'DNF' : 'Platz'}\">\n      <button type=\"button\" class=\"remove-btn\" onclick=\"removePlatzierung(this)\">\u2715<\/button>\n    `;\n    platzDiv.appendChild(div);\n    platzIndex++;\n  }\n\n  function removePlatzierung(button) {\n    const card = button.closest(\".platzierung-card\");\n    card.remove();\n    platzIndex = 1;\n    [...platzDiv.children].forEach(card => {\n      const isDNF = card.querySelector(\"input[type='hidden']\").value === 'DNF';\n      card.dataset.index = platzIndex;\n      card.querySelector(\"label\").textContent = isDNF ? 'DNF' : platzIndex + '. Platz';\n      card.querySelector(\"input[list]\").name = \"bootname_\" + platzIndex;\n      card.querySelector(\"input[type='number']\").name = \"startnummer_\" + platzIndex;\n      card.querySelector(\"input[type='hidden']\").name = \"platz_typ_\" + platzIndex;\n      platzIndex++;\n    });\n  }\n\n  addPlatzierung();\n\n  function syncStartnummer(index) {\n    const name = document.querySelector(`[name=\"bootname_${index}\"]`).value.toLowerCase();\n    const nrField = document.querySelector(`[name=\"startnummer_${index}\"]`);\n    for (const [nr, boot] of Object.entries(schiffe)) {\n      if (boot.toLowerCase() === name) {\n        nrField.value = nr;\n        break;\n      }\n    }\n  }\n\nfunction syncBootname(index) {\n  const nr = document.querySelector(`[name=\"startnummer_${index}\"]`).value;\n  const nameField = document.querySelector(`[name=\"bootname_${index}\"]`);\n\n  if (schiffe[nr]) {\n    nameField.value = schiffe[nr];\n  } else {\n    nameField.value = \"\";\n  }\n}\n\n  function nextStep(current) {\n    document.getElementById(\"step\" + current).classList.add(\"hidden\");\n    document.getElementById(\"step\" + (current + 1)).classList.remove(\"hidden\");\n\n    if (current === 2) {\n      const count = [...document.querySelectorAll(\"#platzierungen input[list]\")].filter(input => input.value.trim()).length;\n      document.getElementById(\"summary_teilnehmer\").textContent = count;\n    }\n\n    if (current === 3) {\n      document.getElementById(\"summary_datum\").textContent = document.querySelector(\"[name='datum']\").value;\n      document.getElementById(\"summary_bahn\").textContent = document.querySelector(\"[name='bahn']\").value;\n      document.getElementById(\"summary_wind\").textContent = document.querySelector(\"[name='wind']\").value;\n      document.getElementById(\"summary_ersteZeit\").textContent = document.querySelector(\"[name='ersteZeit']\").value;\n      document.getElementById(\"summary_letzteZeit\").textContent = document.querySelector(\"[name='letzteZeit']\").value;\n      document.getElementById(\"summary_hinweise\").textContent = document.querySelector(\"[name='hinweise']\").value;\n\n      const teilnehmer = [...document.querySelectorAll(\"#platzierungen input[list]\")].filter(input => input.value.trim()).length;\n      document.getElementById(\"summary_teilnehmer\").textContent = teilnehmer;\n\n      const table = document.getElementById(\"zusammenfassung\");\n      table.innerHTML = \"<tr><th>Platz<\/th><th>Bootsname<\/th><th>Startnummer<\/th><\/tr>\";\n\n      for (let i = 1; i < platzIndex; i++) {\n        const name = document.querySelector(`[name=\"bootname_${i}\"]`)?.value.trim();\n        const nummer = document.querySelector(`[name=\"startnummer_${i}\"]`)?.value.trim();\n        const typ = document.querySelector(`[name=\"platz_typ_${i}\"]`)?.value;\n        if (name) {\n          const row = table.insertRow();\n          row.insertCell(0).textContent = typ === 'DNF' ? 'DNF' : i;\n          row.insertCell(1).textContent = name;\n          row.insertCell(2).textContent = nummer;\n        }\n      }\n    }\n  }\n\n  function prevStep(current) {\n    document.getElementById(\"step\" + current).classList.add(\"hidden\");\n    document.getElementById(\"step\" + (current - 1)).classList.remove(\"hidden\");\n  }\n\n  document.getElementById(\"regattaForm\").addEventListener(\"submit\", async function(e) {\n    e.preventDefault();\n    document.getElementById(\"loader\").classList.remove(\"hidden\");\n\n    const platzierungen = [];\n    for (let i = 1; i < platzIndex; i++) {\n      const name = document.querySelector(`[name=\"bootname_${i}\"]`)?.value.trim();\n      const nummer = document.querySelector(`[name=\"startnummer_${i}\"]`)?.value.trim();\n      const typ = document.querySelector(`[name=\"platz_typ_${i}\"]`)?.value;\n      if (name) {\n        platzierungen.push({ platz: typ === 'DNF' ? 'DNF' : i, name, nummer });\n      }\n    }\n\n    const data = {\n      datum: document.querySelector(\"[name='datum']\").value,\n      bahn: document.querySelector(\"[name='bahn']\").value,\n      wind: document.querySelector(\"[name='wind']\").value,\n      ersteZeit: document.querySelector(\"[name='ersteZeit']\").value,\n      letzteZeit: document.querySelector(\"[name='letzteZeit']\").value,\n      hinweise: document.querySelector(\"[name='hinweise']\").value,\n      platzierungen: platzierungen\n    };\n\n    try {\n      await fetch(\"https:\/\/script.google.com\/macros\/s\/AKfycby5iCNntGkwxau-RZnvkkjxGhP1-zV-JXBDo5Igk4bMTVYKgC8-wH93C7WbY67AUlhw\/exec\", {\n        method: \"POST\",\n          mode: \"no-cors\",\n          headers: {\n            \"Content-Type\": \"application\/json\"\n          },\n          body: JSON.stringify(data)\n        });\n\n      document.getElementById(\"regattaForm\").classList.add(\"hidden\");\n      document.getElementById(\"loader\").classList.add(\"hidden\");\n      document.getElementById(\"confirmation\").classList.remove(\"hidden\");\n    } catch (err) {\n      alert(\"Fehler beim Senden: \" + err.message);\n      document.getElementById(\"loader\").classList.add(\"hidden\");\n    }\n  });\n<\/script>\n\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e3fe84 elementor-widget elementor-widget-html\" data-id=\"8e3fe84\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div style=\"background-color: white; border-radius: 12px; padding: 30px; max-width: 800px; margin: auto; font-family: 'Open Sans', sans-serif; font-size: 1.05rem; color: #1f2937; line-height: 1.6; box-shadow: 0 4px 12px rgba(0,0,0,0.05);\">\n\n  <p>\n    \ud83d\udccb Die <strong>Zieldurchgangsliste<\/strong> steht dir weiterhin zum Download bereit.  \n    Die Ergebnis-Erfassung darf gerne \u00fcber das neue <strong>Online-Formular<\/strong> erfolgen.\n  <\/p>\n\n  <div style=\"margin-top: 20px; text-align: left;\">\n    <a href=\"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-content\/uploads\/2025\/04\/Zieldurchgangsliste2025.docx\"\n       download\n       style=\"display: inline-block; padding: 10px 16px; background-color: #007BBA; color: #fff; text-decoration: none; border-radius: 6px; font-weight: 600; font-size: 1rem; box-shadow: 0 2px 10px rgba(0,0,0,0.1); transition: background-color 0.2s ease;\"\n       onmouseover=\"this.style.backgroundColor='#005f8d'\"\n       onmouseout=\"this.style.backgroundColor='#007BBA'\">\n      \ud83d\udcc4 Zieldurchgangsliste herunterladen (.doc)\n    <\/a>\n  <\/div>\n<\/div>\n\t\t\t\t<\/div>\n\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-5acdd2a e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"5acdd2a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Zielliste Mittwochsregatta Regattadaten Datum: Bahn: Bitte w\u00e4hlenLRTPHKNT1T4 Wind (Richtung\/St\u00e4rke): Uhrzeit erster Zieleinlauf: Weiter Platzierungen + Platzierung + DNF Zur\u00fcck Weiter Zus\u00e4tzliche Informationen Uhrzeit letzter Zieleinlauf: Weitere Hinweise oder Erg\u00e4nzungen: Zur\u00fcck Weiter Zusammenfassung Regattadaten Datum: Bahn: Wind: Uhrzeit erster Zieleinlauf: Uhrzeit letzter Zieleinlauf: Hinweise: Teilnehmerzahl: Platzierungen Hiermit best\u00e4tige ich, dass alle Angaben vollst\u00e4ndig und korrekt sind. Zur\u00fcck Absenden Bitte warten &#8230; Vielen Dank! Die Regattadaten wurden erfolgreich \u00fcbermittelt. \ud83d\udccb Die Zieldurchgangsliste steht dir weiterhin zum Download bereit. Die Ergebnis-Erfassung darf gerne \u00fcber das neue Online-Formular erfolgen. \ud83d\udcc4 Zieldurchgangsliste herunterladen (.doc)<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-114","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/pages\/114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/comments?post=114"}],"version-history":[{"count":245,"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/pages\/114\/revisions"}],"predecessor-version":[{"id":1552,"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/pages\/114\/revisions\/1552"}],"wp:attachment":[{"href":"http:\/\/www.mittwochsregatta-neustadt.de\/mittwochsregatta\/wp-json\/wp\/v2\/media?parent=114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}