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
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());
|
|
})
|