export async function initSequencePage() { const listContainer = document.getElementById('sequence-list') || document.getElementById('ablauf-list'); const filterChips = document.querySelectorAll('.filter-chip'); if (!listContainer) { console.warn('Sequence container not found.'); return; } try { const response = await fetch('data/sequence/sequence.json'); if (!response.ok) throw new Error('Sequence data could not be loaded.'); const sequenceSteps = await response.json(); renderSequenceList(listContainer, sequenceSteps); setupFilterLogic(filterChips); } catch (error) { console.error('Error loading sequence:', error); listContainer.innerHTML = '
Sequence could not be loaded.
'; } } function renderSequenceList(container, steps) { container.innerHTML = ''; steps.forEach(step => { const item = document.createElement('div'); item.className = 'ablauf-item'; item.dataset.categories = step.categories.join(','); item.innerHTML = `Loading...
Content could not be loaded.
'; } } }); container.appendChild(item); }); } function setupFilterLogic(filterChips) { if (!filterChips || filterChips.length === 0) return; let activeFilters = new Set(['alle']); function applyFilters() { document.querySelectorAll('.ablauf-item').forEach(item => { const categories = item.dataset.categories ? item.dataset.categories.split(',') : []; const isVisible = activeFilters.has('alle') || categories.some(cat => activeFilters.has(cat)); item.style.display = isVisible ? '' : 'none'; }); } filterChips.forEach(chip => { chip.addEventListener('click', () => { const filter = chip.dataset.filter; if (filter === 'alle') { activeFilters = new Set(['alle']); filterChips.forEach(c => c.classList.remove('active')); chip.classList.add('active'); } else { if (activeFilters.has('alle')) { activeFilters.delete('alle'); document.querySelector('.filter-chip[data-filter="alle"]')?.classList.remove('active'); } if (activeFilters.has(filter)) { activeFilters.delete(filter); chip.classList.remove('active'); } else { activeFilters.add(filter); chip.classList.add('active'); } if (activeFilters.size === 0) { activeFilters.add('alle'); document.querySelector('.filter-chip[data-filter="alle"]')?.classList.add('active'); } } applyFilters(); }); }); applyFilters(); }