document.addEventListener("DOMContentLoaded", function () { let groupSelectElement = document.getElementById("election-group"), areaSelectElement = document.getElementById("election-area"), formContainer = document.querySelector(".election-form--form"); // STEP 1: LOAD SEARCH ITEMS // Load all groups and areas if (formContainer) { fetch("https://ihk-wahl.info/selects?ihk_id=M6uOiDGzTD7SlhF1") .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { // Fill in groups // Remove old entries while (groupSelectElement.firstChild) { groupSelectElement.removeChild(groupSelectElement.firstChild); } // Sort groups alphabetically by name let sortedGroups = data.groups.slice().sort(function (a, b) { return a.number.localeCompare(b.number); }); // Populate with sorted options let groupsOptionElement = document.createElement("option"); groupsOptionElement.value = "-"; groupsOptionElement.textContent = "Wahlgruppe (Alle)"; groupsOptionElement.setAttribute("data-number", ""); groupsOptionElement.setAttribute("data-title", "Alle"); groupSelectElement.appendChild(groupsOptionElement); sortedGroups.forEach(function (group) { let groupsOptionElement = document.createElement("option"); groupsOptionElement.value = group.id; groupsOptionElement.textContent = group.number + " " + group.title; groupsOptionElement.setAttribute("data-number", group.number); groupsOptionElement.setAttribute("data-title", group.title); groupSelectElement.appendChild(groupsOptionElement); }); // Fill in areas // Remove old entries while (areaSelectElement.firstChild) { areaSelectElement.removeChild(areaSelectElement.firstChild); } // Sort groups alphabetically by name let sortedAreas = data.districts.slice().sort(function (a, b) { return a.number.localeCompare(b.number); }); // Populate with sorted options let areasOptionElement = document.createElement("option"); areasOptionElement.value = "-"; areasOptionElement.textContent = "Wahlbezirk (Alle)"; areasOptionElement.setAttribute("data-number", ""); areasOptionElement.setAttribute("data-title", "Alle"); areaSelectElement.appendChild(areasOptionElement); sortedAreas.forEach(function (district) { let areasOptionElement = document.createElement("option"); areasOptionElement.value = district.id; areasOptionElement.textContent = district.number + " " + district.title; areasOptionElement.setAttribute("data-number", district.number); areasOptionElement.setAttribute("data-title", district.title); areaSelectElement.appendChild(areasOptionElement); }); }) .catch(error => { // Handle errors here console.error('Fetch error:', error); }); // STEP 2: CLICK SEARCH // Click on search const hiddenInput = document.createElement('input'); hiddenInput.type = 'hidden'; hiddenInput.name = 'ihk_id'; hiddenInput.value = 'M6uOiDGzTD7SlhF1'; formContainer.appendChild(hiddenInput); formContainer.onsubmit = function (e) { e.preventDefault(); submitForm(e); }; let selectElements = formContainer.querySelectorAll("select"); selectElements.forEach(select => { select.addEventListener("change", function (e) { submitForm(); }); }); document.addEventListener("click", function (event) { // click one of the search again links if (event.target && (event.target.getAttribute("data-search") === "group" || event.target.getAttribute("data-search") === "area")) { let id = event.target.getAttribute("data-id"); document.getElementById("election-searchstring").value = ""; if (event.target.getAttribute("data-search") === "group") { document.getElementById("election-group").value = id; document.getElementById("election-area").value = "-"; } else if (event.target.getAttribute("data-search") === "area") { document.getElementById("election-group").value = "-"; document.getElementById("election-area").value = id; } submitForm(); } // click the detail page link const topBoxElement = event.target.closest(".top-box"); if (topBoxElement) { let ihkId = topBoxElement.getAttribute("data-ihk_id"), candidate = topBoxElement.getAttribute("data-c"); showDetailPage(event, ihkId, candidate); } // click the back button if (event.target.closest(".election-detail--back a")) { event.preventDefault(); hideDetailPage(); } }); } // STEP 3 NEW: SET LINK AND LOAD DETAIL PAGE }); function submitForm(e) { let formData, groupSelectElement = document.getElementById("election-group"), areaSelectElement = document.getElementById("election-area"), xhr = new XMLHttpRequest(); if(e) { formData = new FormData(e.target); } else { formData = new FormData(document.querySelector(".election-form--form")); } xhr.open("POST", "https://ihk-wahl.info/search", true); xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { console.log("Form data sent successfully!"); let data = JSON.parse(xhr.responseText); // Assuming the backend sends JSON response // Add badge with result (group and area) let badgeGroupsAreas = document.querySelector(".election-result-list--header-left"), selectedGroupOption = groupSelectElement.options[groupSelectElement.selectedIndex], groupNumber = selectedGroupOption.getAttribute("data-number"), groupTitle = selectedGroupOption.getAttribute("data-title"), selectedAreaOption = areaSelectElement.options[areaSelectElement.selectedIndex], areaNumber = selectedAreaOption.getAttribute("data-number"), areaTitle = selectedAreaOption.getAttribute("data-title"), searchContent = document.getElementById("election-searchstring"); let badgeHtml = ""; badgeHtml += (groupNumber !== "" || groupTitle !== "") && (groupTitle !== "Alle") ? `
Wahlgruppe ${groupNumber}: ${groupTitle}
Wahlbezirk ${areaNumber}: ${areaTitle}
Suchbegriff: ${searchContent.value}
${resultsIndex}Kanditat:innen
${data.position}
` : ''; htmlText += data.election_statement ? `${data.election_statement}
` : ''; if (data.twitter_link || data.facebook_link || data.xing_link || data.whatsapp_link || data.linkedin_link || data.threema_link || data.telegram_link) { htmlText += ` `; } htmlText += 'Wahlgruppe 02
Wahlbezirk 05
Unternehmen
${data.company}
` : ''; htmlInfo += data.company_address ? `${data.company_address}
` : ''; htmlInfo += data.website ? ` ` : ''; htmlInfo += data.email ? ` ` : ''; if (data.phone) { htmlInfo += ` `; console.log(data); } if (data.phone2) { htmlInfo += ` `; } htmlInfo += data.company ? `