Malý repozitář pro WTL 3.I 2025/2026
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

84 lines
2.9 KiB

API_KEY = "DEMO_KEY";
API_URL = "https://api.nasa.gov/planetary/apod";
//elementy
const btnDnes = document.getElementById("btnDnes");
const btnNahodny = document.getElementById("btnNahodny");
const stav = document.getElementById("stav");
const apodKarta = document.getElementById("apodKarta");
const nadpis = document.getElementById("nadpis");
const datum = document.getElementById("datum");
const popis = document.getElementById("popis");
const autor = document.getElementById("autor");
const mediaKontejner = document.getElementById("mediaKontejner");
function ziskejDnesniDatum() {
const dnes= new Date();
const rok = dnes.getFullYear();
const mesic = String(dnes.getMonth()+1).padStart(2,"0");
const den = String(dnes.getDate()).padStart(2,"0");
return `${rok}-${mesic}-${den}`;
}
function ziskejNahodnyDatum() {
const start = new Date(1995,5,16);
const konec= new Date();
const nahodny = new Date(start.getTime() + Math.random() * (konec.getTime() - start.getTime()));
const rok = nahodny.getFullYear();
const mesic = String(nahodny.getMonth()+1).padStart(2,"0");
const den = String(nahodny.getDate()).padStart(2,"0");
return `${rok}-${mesic}-${den}`;
}
//hlavní funkce
async function nactiAPOD(vybranyDatum) {
stav.innerText = "Načítám snímek....";
stav.classList.add = "nacitani"
try {
// & = AltGR + C
url = `${API_URL}?api_key=${API_KEY}&date=${vybranyDatum}`
console.log(url)
const odpoved = await fetch(url);
if(!odpoved.ok) {
throw new Error(`chyba serveru (HTTP ${odpoved.status})`);
}
const data = await odpoved.json();
//kontrola chybové hlášky z API (např. špatný klíč)
if (data.code && data.code !== 200) {
throw new Error(data.msg || "Neznáma chyba API");
}
//zobrazení obsahu podle typu média
if (data.media_type === "video") {
mediaKontejner.innerHTML = `<iframe src="${data.url}" allowfullscreen></iframe>`;
} else {
const imgUrl = data.hdurl || data.url;
mediaKontejner.innerHTML = `<img src="${imgUrl}" alt=${data.title}>`;
}
//doplnime informace do karty
nadpis.innerText = data.title;
datum.innerText = data.date;
popis.innerText = data.explanation;
autor.innerText = data.copyright || "NASA";
//zobrazení karty
apodKarta.classList.remove("d-none");
stav.innerText = "";
} catch (error) {
stav.innerText = "Chyba: " + error.message;
console.error("Chyba při načítaní dat",error);
} finally {
stav.classList.remove("nacitani")
}
}
//přidamé odposlech na tlačítka
btnDnes.addEventListener("click", function () {
nactiAPOD(ziskejDnesniDatum());
})
btnNahodny.addEventListener("click", function () {
nactiAPOD(ziskejNahodnyDatum());
})