// Aktuality Manager - Načítá a zobrazuje aktuality z XML souboru
class AktualityManager {
constructor() {
this.xmlFile = 'aktuality.xml';
this.containerSelector = '.aktuality-grid';
}
// Načte XML soubor
async loadXML() {
try {
const response = await fetch(this.xmlFile);
if (!response.ok) {
throw new Error(`Chyba při načítání XML: ${response.status}`);
}
const xmlText = await response.text();
return new DOMParser().parseFromString(xmlText, "text/xml");
} catch (error) {
console.error('Chyba při načítání aktualit:', error);
this.showError();
return null;
}
}
// Zobrazí chybovou zprávu
showError() {
const container = document.querySelector(this.containerSelector);
if (container) {
container.innerHTML = `
Nepodařilo se načíst aktuality. Zkuste to prosím později.
`;
}
}
// Vytvoří HTML pro jednu položku
createAktualityItem(polozka) {
const typ = polozka.querySelector('typ')?.textContent || 'Novinka';
const datum = polozka.querySelector('datum')?.textContent || '';
const titulek = polozka.querySelector('titulek')?.textContent || '';
const popis = polozka.querySelector('popis')?.textContent || '';
const link = polozka.querySelector('link')?.textContent;
const linkText = polozka.querySelector('linkText')?.textContent || 'Více informací';
let linkHtml = '';
if (link) {
linkHtml = `
${linkText}
`;
}
return `
${typ}
${datum}
${titulek}
${popis}
${linkHtml}
`;
}
// Zobrazí aktuality na stránce
async displayAktuality() {
const xmlDoc = await this.loadXML();
if (!xmlDoc) return;
const container = document.querySelector(this.containerSelector);
if (!container) return;
const polozky = xmlDoc.querySelectorAll('polozka');
if (polozky.length === 0) {
container.innerHTML = `
Momentálně žádné aktuality.
`;
return;
}
let html = '';
polozky.forEach(polozka => {
html += this.createAktualityItem(polozka);
});
container.innerHTML = html;
}
// Inicializace - zavolá se při načtení stránky
init() {
document.addEventListener('DOMContentLoaded', () => {
this.displayAktuality();
});
}
}
// Vytvoření instance a inicializace
const aktualityManager = new AktualityManager();
aktualityManager.init();