document.addEventListener('DOMContentLoaded', async () => { // Container für die Berater-Karten auswählen const container = document.getElementById('berater-container'); // Titel- und Untertitel-Elemente aus dem HTML abrufen const titleEl = document.querySelector('.section-title'); const subtitleEl = document.querySelector('.section-subtitle'); let daten; try { // Daten aus der JSON-Datei asynchron laden const response = await fetch('json/berater.json'); if (!response.ok) throw new Error(`HTTP Fehler: ${response.status}`); daten = await response.json(); } catch (error) { console.error('Fehler beim Laden der JSON-Datei:', error); // Fehlermeldung auf der Webseite anzeigen, falls das Laden fehlschlägt if (container) { container.innerHTML = '

Daten konnten nicht geladen werden.

'; } return; } // 1. Titel und Einleitungstext (Intro) aus der JSON-Datei einfügen if (titleEl && daten.intro) { titleEl.textContent = daten.intro.titel; } if (subtitleEl && daten.intro) { subtitleEl.textContent = daten.intro.text; } // 2. Berater-Karten verarbeiten und erstellen // Wir iterieren über das Array "berater" innerhalb der JSON-Daten daten.berater.forEach(berater => { // Ein neues div-Element für die Karte erstellen const card = document.createElement('div'); card.className = 'berater-card'; // Zertifikate verarbeiten (falls vorhanden) let zertifikateHtml = ''; if (berater.zertifikate && berater.zertifikate.length > 0) { zertifikateHtml = `

Zertifikate

`; } // Links verarbeiten (falls vorhanden) let linksHtml = ''; if (berater.links && berater.links.length > 0) { linksHtml = ``; } // Zusatzinformationen verarbeiten (falls vorhanden) let zusatzHtml = ''; if (berater.zusatzInfo) { zusatzHtml = `

${berater.zusatzInfo}

`; } // Eigene/unbekannte dynamische Felder verarbeiten // Zuerst definieren wir, welche Felder Standard sind und ignoriert werden sollen const standardFelder = ['id', 'name', 'role', 'image', 'bioTitle', 'bioText', 'zertifikate', 'links', 'zusatzInfo']; let eigeneFelderHtml = ''; // Wir durchlaufen jeden Eintrag in der JSON für diesen spezifischen Berater for (const [schluessel, wert] of Object.entries(berater)) { // Wenn das Feld kein Standardfeld ist, generieren wir daraus eine Überschrift und den zugehörigen Text if (!standardFelder.includes(schluessel)) { eigeneFelderHtml += `

${schluessel}

${wert}

`; } } // Die Karte mit allen gesammelten HTML-Bausteinen zusammenbauen card.innerHTML = `
${berater.name} Profilbild

${berater.name}

${berater.role}

${berater.bioTitle}

${berater.bioText}

${eigeneFelderHtml} ${zusatzHtml} ${zertifikateHtml} ${linksHtml}
`; // Die fertige Karte zum Container auf der Seite hinzufügen container.appendChild(card); }); // "Trainingsplan buchen"-Buttons öffnen das Kalender-Pop-up (js/terminbuchung.js) // mit der jeweiligen Berater-ID, statt eine externe Seite zu laden. if (container) { container.addEventListener('click', (event) => { const button = event.target.closest('[data-terminbuchung]'); if (!button) return; if (window.Terminbuchung && typeof window.Terminbuchung.oeffnen === 'function') { window.Terminbuchung.oeffnen(Number(button.dataset.terminbuchung)); } else { // Fallback, falls terminbuchung.js nicht geladen wurde: ursprüngliches Linkziel. window.location.href = button.dataset.url || '#'; } }); } });