|
|
@ -3,6 +3,10 @@ const btnNajdi = document.getElementById("btnNajdi"); |
|
|
const btnVse = document.getElementById("btnVse"); |
|
|
const btnVse = document.getElementById("btnVse"); |
|
|
const stav = document.getElementById("stav"); |
|
|
const stav = document.getElementById("stav"); |
|
|
const vysledek = document.getElementById("vysledek"); |
|
|
const vysledek = document.getElementById("vysledek"); |
|
|
|
|
|
const postyKontejner = document.getElementById("posty-kontejner"); |
|
|
|
|
|
const btnPosty = document.getElementById("btnPosty"); |
|
|
|
|
|
|
|
|
|
|
|
let aktualniUserId = null; |
|
|
|
|
|
|
|
|
// FUNKCE 1 : Načtení všech uživatelů
|
|
|
// FUNKCE 1 : Načtení všech uživatelů
|
|
|
async function nactiVsechny() { |
|
|
async function nactiVsechny() { |
|
|
@ -36,6 +40,9 @@ async function nactiVsechny() { |
|
|
async function nactiJednoho() { |
|
|
async function nactiJednoho() { |
|
|
const id = inputId.value; |
|
|
const id = inputId.value; |
|
|
vysledek.innerHTML = ""; |
|
|
vysledek.innerHTML = ""; |
|
|
|
|
|
postyKontejner.innerHTML = ""; |
|
|
|
|
|
btnPosty.disabled = true; |
|
|
|
|
|
aktualniUserId = null; |
|
|
stav.innerText = `Hledám uživatele s ID: ${id}`; |
|
|
stav.innerText = `Hledám uživatele s ID: ${id}`; |
|
|
|
|
|
|
|
|
try{ |
|
|
try{ |
|
|
@ -43,16 +50,23 @@ async function nactiJednoho() { |
|
|
if(!odpoved.ok) { |
|
|
if(!odpoved.ok) { |
|
|
throw new Error(`Uživatel s ID ${id} neexistuje (HTTP ${odpoved.status})`); |
|
|
throw new Error(`Uživatel s ID ${id} neexistuje (HTTP ${odpoved.status})`); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const u = await odpoved.json(); |
|
|
const u = await odpoved.json(); |
|
|
vysledek.innerHTML = ` |
|
|
vysledek.innerHTML = ` |
|
|
<h3>${u.name}</h3> |
|
|
|
|
|
|
|
|
<div class="user-card"> |
|
|
|
|
|
<h3>${u.name} (ID:${u.id})</h3> |
|
|
<ul> |
|
|
<ul> |
|
|
<li>${u.username}</li> |
|
|
<li>${u.username}</li> |
|
|
<li>${u.email}</li> |
|
|
<li>${u.email}</li> |
|
|
<li>${u.adress}</li> |
|
|
|
|
|
|
|
|
<li>${u.address.city}</li> |
|
|
</ul> |
|
|
</ul> |
|
|
|
|
|
</div> |
|
|
`;//AltGR + ý = ` (Template literal) |
|
|
`;//AltGR + ý = ` (Template literal) |
|
|
stav.innerText = "Uživatel nalezen" |
|
|
stav.innerText = "Uživatel nalezen" |
|
|
|
|
|
//aktivace vyhledávání postů
|
|
|
|
|
|
aktualniUserId = u.id; |
|
|
|
|
|
btnPosty.disabled = false; |
|
|
|
|
|
btnPosty.innerText = `Načíst příspvěky (autor: ${u.name})` |
|
|
|
|
|
|
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
stav.innerText = "Došlo k chybě"; |
|
|
stav.innerText = "Došlo k chybě"; |
|
|
@ -61,8 +75,36 @@ async function nactiJednoho() { |
|
|
} finally { |
|
|
} finally { |
|
|
console.log(`Pokus o načtení ID ${id} dokončen`); |
|
|
console.log(`Pokus o načtení ID ${id} dokončen`); |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async function nactiPosty() { |
|
|
|
|
|
//Pojistka pokud nemame ID
|
|
|
|
|
|
if(!aktualniUserId) return; |
|
|
|
|
|
postyKontejner.innerHTML = "<p>Načítám příspěvky</p>"; |
|
|
|
|
|
btnPosty.disabled = true; //zabráníme opakovanému klikání během načítaní
|
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
const odpoved = await fetch(`https://jsonplaceholder.typicode.com/users/${aktualniUserId}/posts`) |
|
|
|
|
|
if(!odpoved.ok) { |
|
|
|
|
|
throw new Error(`Uživatel s ID ${id} neexistuje (HTTP ${odpoved.status})`); |
|
|
|
|
|
} |
|
|
|
|
|
const posty = await odpoved.json(); |
|
|
|
|
|
const html = posty.map(p => ` |
|
|
|
|
|
<div class="post"> |
|
|
|
|
|
<strong>${p.title}</strong> |
|
|
|
|
|
<p>${p.body}</p> |
|
|
|
|
|
</div> |
|
|
|
|
|
`).join("");
|
|
|
|
|
|
|
|
|
|
|
|
postyKontejner.innerHTML = `<h4>Příspěvky autora (${posty.length})</h4>` +html; |
|
|
|
|
|
stav.innerText = "Data načtena" |
|
|
|
|
|
} catch(e){ |
|
|
|
|
|
postyKontejner.innerHTML = `<p style="color:red">chyba:${e.message}</p>` |
|
|
|
|
|
} finally { |
|
|
|
|
|
btnPosty.disabled = false |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
btnVse.addEventListener("click",nactiVsechny); |
|
|
btnVse.addEventListener("click",nactiVsechny); |
|
|
btnNajdi.addEventListener("click",nactiJednoho); |
|
|
btnNajdi.addEventListener("click",nactiJednoho); |
|
|
|
|
|
btnPosty.addEventListener("click",nactiPosty) |