// Version: 29.09.2025 16:05 import * as api from './api.js'; // --- State-Variablen --- let lexiconGrid; let lexiconSearch; let lexiconDetailModal; let allPlants = []; // --- Hilfsfunktion, um das Modal-Element zu holen --- function getModalElement() { if (!lexiconDetailModal) { lexiconDetailModal = document.getElementById('lexiconDetailModal'); } return lexiconDetailModal; } // --- Hauptfunktionen für das Lexikon-Modal (exportiert) --- export async function openLexiconDetailModal(latinName) { const modal = getModalElement(); if (!modal) { console.error("Lexikon-Detail-Modal nicht im DOM gefunden!"); return; } try { const plant = await api.getLexiconEntryDetails(latinName); const mainImage = modal.querySelector('#lexiconModalImage'); const placeholderImg = 'https://placehold.co/800x600/eeeeee/3D403D?text=' + encodeURIComponent(plant.name); modal.querySelector('#lexiconModalPlantName').textContent = plant.name; modal.querySelector('#lexiconModalLatinName').textContent = plant.latin_name; const thumbnailContainer = modal.querySelector('.lexicon-modal-thumbnails'); thumbnailContainer.innerHTML = ''; if (plant.photo_gallery && plant.photo_gallery.length > 0) { mainImage.src = plant.photo_gallery[0]; if (plant.photo_gallery.length > 1) { thumbnailContainer.style.display = 'flex'; plant.photo_gallery.forEach((photoUrl, index) => { const thumb = document.createElement('img'); thumb.src = photoUrl; thumb.className = 'thumbnail-img'; if (index === 0) thumb.classList.add('active'); thumb.addEventListener('click', (e) => { mainImage.src = photoUrl; thumbnailContainer.querySelectorAll('.thumbnail-img').forEach(t => t.classList.remove('active')); e.target.classList.add('active'); }); thumbnailContainer.appendChild(thumb); }); } else { thumbnailContainer.style.display = 'none'; } } else { mainImage.src = placeholderImg; thumbnailContainer.style.display = 'none'; } mainImage.onerror = function() { this.src = placeholderImg; }; const familySpan = modal.querySelector('#lexiconModalFamily'); const genusSpan = modal.querySelector('#lexiconModalGenus'); const metaContainer = modal.querySelector('.lexicon-modal-meta'); const hasFamily = plant.plant_family && plant.plant_family.toLowerCase() !== 'unbekannt'; const hasGenus = plant.plant_genus && plant.plant_genus.toLowerCase() !== 'unbekannt'; familySpan.textContent = hasFamily ? plant.plant_family : ''; familySpan.parentElement.style.display = hasFamily ? 'block' : 'none'; genusSpan.textContent = hasGenus ? plant.plant_genus : ''; genusSpan.parentElement.style.display = hasGenus ? 'block' : 'none'; metaContainer.style.display = (hasFamily || hasGenus) ? 'flex' : 'none'; const descriptionContainer = modal.querySelector('.lexicon-modal-description'); if (plant.description_full) { const sections = plant.description_full.split(/\n\s*\n/); let formattedHtml = ''; sections.forEach(section => { const parts = section.split(/:(.*)/s); if (parts.length > 1) { const title = parts[0].trim(); const content = parts[1].trim(); if (title && content) { formattedHtml += `
${content.replace(/\n/g, '
')}
${section.trim().replace(/\n/g, '
')}
Keine Beschreibung verfügbar.
'; } modal.classList.add('show'); document.body.classList.add('modal-open'); } catch (error) { console.error('Fehler beim Laden der Pflanzendetails:', error); // Hier könnte man dem User eine UI-Nachricht zeigen } } export function closeLexiconDetailModal() { const modal = getModalElement(); if (modal) { modal.classList.remove('show'); if (!document.querySelector('.modal.show')) { document.body.classList.remove('modal-open'); } } } // --- Funktionen nur für die lexikon.php Seite --- async function loadLexiconOverview() { try { allPlants = await api.getLexiconEntries(); renderLexiconOverview(allPlants); } catch (error) { console.error('Fehler beim Laden des Lexikons:', error); if (lexiconGrid) { lexiconGrid.innerHTML = 'Das Lexikon konnte nicht geladen werden.
'; } } } function renderLexiconOverview(plants) { if (!lexiconGrid) return; lexiconGrid.innerHTML = ''; if (plants.length === 0) { lexiconGrid.innerHTML = 'Noch keine Einträge im Lexikon vorhanden.
'; return; } plants.forEach(plant => { const card = document.createElement('div'); card.className = 'lexicon-card'; card.dataset.latinName = plant.latin_name; const placeholderImg = 'https://placehold.co/600x600/eeeeee/3D403D?text=' + encodeURIComponent(plant.name); card.innerHTML = `${plant.latin_name}