Za úkol máš vyrobit aplikaci, která zobrazuje seznam zvířátek v ZOO. Když klikneš na zvířátko v seznamu, zobrazí se vpravo jeho detailní popis.
Tentokrát není zadání postup krok za krokem, na poustu věcí si musíš přijít sama.
Tentokrát nebudeš vytvářet aplikaci úplně od začátku pomocí create-czechitas-app
, ale postupuj následovně:
- Předpokládáme, že máš účet na GitHubu. Pokud ne, zaregistruj si ho a přihlaš se do něj.
- Udělej si fork tohoto repozitáře se zadáním (tím se ti úkol zkopíruje do tvého GitHub účtu).
- Naklonuj si repozitář ze svého GitHub účtu k sobě na disk.
- Až budeš mít úkol hotový (viz. dále), tak nezapomeň udělat commit a push zpět na GitHub.
- Úkol budeš odevzdávat jako odkaz na GitHub se svým zpracovaným řešením.
Pokud nevíš, jak s Gitem a GitHubem pracovat, zeptej se nás na Slacku nebo se prosím podívej na následující videa. Jsou z jiného kurzu, ale vše platí i pro náš kurz:
-
I když ty sama jsi projekt nezakládala z nuly pomocí
create-czechitas-app
, projekt je vytvořený pomocí tohoto nástroje a používá se úplně stejně. Jen už v sobě obsahuje i nějaké další připravené podklady, jako obrázky a údaje o filmech. -
Otevři si v editoru složku projektu, kterou sis z GitHubu naklonovala k sobě na disk. Složka, kterou otevíráš, by měla obsahovat soubor
package.json
(a další soubory a složky). -
Otevři si v editoru terminál / příkazovou řádku a spusť příkaz:
npm install
Tím se ti do projektu doinstalují všechny potřebné balíčky závislostí stejně, jako kdybys projekt vytvářela/instalovala pomocí
create-czechitas-app
. -
Známým způsobem zkus projekt spustit. Měla bys vidět stránku, na které je nadpis Zvířátka v ZOO.
Tvým cílem je vytvořit stránku, která bude zobrazovat na levé straně seznam zvířat a na pravé straně detail vybraného zvířete.
-
Aplikaci budeš tvořit jako vždy ve složce
src
. Když se ale podíváš do složkyhtml-vzor
, máš tam připravený vzhled aplikace v podobě hotového HTML, CSS a připravených obrázků. -
Vytvoř si komponenty:
AnimalList
- to bude seznam všech zvířátek na levé straně obrazovkyAnimal
- to bude jedno zvířátko v seznamu (je v něm malá fotečka a český a latinský název)AnimalDetail
- to bude detail rozkliknutého zvířete s velkou fotkou a všemi podrobnostmi
Vezmi vzorové HTML a CSS a rozkouskuj ho do příslušných komponent.
-
Obrázky ze složky
images
uvnitřhtml-vzor
nemusíš dosrc
kopírovat. V datech o zvířatkách (viz. další kroky) budou odkazy na obrázky přímo z internetu. Do aplikace si potřebuješ zkopírovat pouze obrázekzoo.jpg
, který se v CSS používá jako pozadí celé stránky. Nezapomeň v CSS upravit cestu tak, aby správně reflektovala jeho nové umístění. -
V hlavní APP si vytvoř stavovou proměnnou. Použij effect, který při prvním zobrazení aplikace stáhne data o zvířatech.
Data najdeš na adrese:
https://lrolecek.github.io/zviratka-api/zvirata.json
Podívej se, jak data vypadají: ukázka. Nepotřebuješ k nim žádný API klíč, jsou veřejně přístupná. Stačí udělat
fetch
na tuto adresu a data jsou tvoje. -
Postup je "jednoduchý":
- v
App
načti data - v
App
zobraz komponentyAnimalList
aAnimalDetail
- do
AnimalList
předej načtená data - v
AnimalList
zobraz seznam zvířat - pro každé zvíře v poli jedna komponentaAnimal
- v
AnimalList
reaguj na kliknutí naAnimal
- pokud k tomu dojde, řekni rodičovské komponentě (App), jaké zvíře se má zobrazit uvnitř komponentyAnimalDetail
- po startu aplikace (a po načtení dat) se automaticky zobrazí první zvíře v seznamu
- v
-
V datech o každém zvířeti je i pole nazvané
zoo
, které obsahuje identifikátory zoologických zahrad, do kterých se můžeš jít na dané zvířátko podívat.Seznam Zoologických zahrad si můžeš načíst z adresy:
https://lrolecek.github.io/zviratka-api/zoo.json
-
V detailu zvířete zobraz jména zoologických zahrad, kde se zvíře nachází.
Extra bonus pro šprtky a šprty:
-
Vyrob komponentu
Search
a umísti ji nad seznam zvířat. V komponentě bude textové pole, do kterého lze psát. -
Zařiď, aby se v seznamu zvířat zobrazovala jen ta zvířata, jejichž český nebo latinský nápis obsahuje napsaný text. Tj. komponenta
Search
musí komunikovat doApp
, jaká data máApp
vyfiltrovat ze seznamu všech zvířat a jen ty pak poslat do komponentyAnimalList
. -
Když hledání nebude odpovídat žádné zvíře, zobrazí se v komponentě hláška o tom, že hledání nic nenašlo.