57. Angular - Chyby HTTP komunikácie
Vytvoríme si službu na vypisovanie informačných a chybových správ cez Material Snackbar. Napíšeme si univerzálnu ochytávaciu metódu na HTTP chyby. Vytvoríme navigáciu na stránku.
Predmet Webové technológie je určený pre študentov Košickej akadémie softvérového vývoja, prvý ročník. Predmet poskytuje vedomosti a skúsenosti v práci s HTML5, CSS3 a Typescript-om.
Vytvoríme si službu na vypisovanie informačných a chybových správ cez Material Snackbar. Napíšeme si univerzálnu ochytávaciu metódu na HTTP chyby. Vytvoríme navigáciu na stránku.
Odchytíme chyby pri prihlasovaní a vypíšeme ich v komponente.
Nastavíme základný router aj s presmerovaním a odchytením všetkých zlých URL adries. Vytvoríme si komponent na prihlasovanie a spracujeme prihlásenie v službe.
Ukážeme si spracovanie chýb z Observable. Ukážeme si na príklade tabuľky používateľov použitie Material knižnice a to rovno cez komponent Material Table s jednoduchými stĺpcami mat-text-column.
Porozprávame si o princípe MVC v komponentoch, vytvoríme si službu na správu zoznamu používateľov. Vytvoríme si service a napojíme sa na REST server.
Server spustíme v konzole, ak máme nainštalovanú javu aspoň vo verzii 17, príkazom:
Vytvoríme si Angular projekt, vysvetlíme si základnú štruktúru, porozprávame si o triedach v Typescripte.
Server spustíme v konzole, ak máme nainštalovanú javu aspoň vo verzii 17, príkazom:
Pokračujeme zo Star Wars úlohami.
Úlohy:
[ { planet: 'Tatooine',
people: [ {'name':'Luke Skywalker','url':'https://swapi.dev/api/people/1/'},
{'name':'C-3PO','url':'https://swapi.dev/api/people/2/'},
{'name':'Darth Vader','url':'https://swapi.dev/api/people/4/'},
...]},
{ planet: 'Alderaan',
people: [ {"name":"Leia Organa","url":"https://swapi.dev/api/people/5/"},
{"name":"Bail Prestor Organa","url":"https://swapi.dev/api/people/68/"},
{"name":"Raymus Antilles","url":"https://swapi.dev/api/people/81/"}
...] },
{ planet: 'Yavin IV',
people: [] },...]
[ { planet: 'Tatooine', species: [ 'Droid' ] },
{ planet: 'Alderaan', species: [ 'Human' ] },
{ planet: 'Yavin IV', species: [] },
...
{ planet: 'Naboo', species: [ 'Droid', 'Gungan', 'Human' ] },
...]
Pokračujeme zo Star Wars úlohami.
Úlohy:
[ 'Ackbar', 'Adi Gallia', 'Anakin Skywalker', 'Arvel Crynyd', 'Ayla Secura',... ]
[ 'Ackbar', 'Mas Amedda', 'Padmé Amidala', 'Wedge Antilles', 'Raymus Antilles',... ]
[ 'Yoda', 'Bossk', 'C-3PO', 'IG-88', 'Lobot', 'R2-D2', 'Han Solo', ... ]
[ { name: 'Luke Skywalker', specimen: [] },
{ name: 'C-3PO', specimen: [ 'Droid' ] },
{ name: 'R2-D2', specimen: [ 'Droid' ] },
{ name: 'Darth Vader', specimen: [] },... ]Budeme pracovať s JSON dokumentmi získanými z adresy https://swapi.dev/ podľa úloh uvedených nižšie.
Úlohy:
[ 'Luke Skywalker', 'C-3PO', 'R2-D2', 'Darth Vader',... ]
Pokračujeme s higher-order funkciami v poliach.
Úlohy:
[
{"langName":"Pashto","population":27657145},
{"langName":"Uzbek","population":27657145},
{"langName":"Turkmen","population":27657145},
{"langName":"Swedish","population":28875},
...]
{
Pashto: 27657145,
Uzbek: 59233545,
Turkmen: 32408265,
Swedish: 15415580,
...}
[
{ language: 'Pashto', count: 27657145 },
{ language: 'Uzbek', count: 59233545 },
{ language: 'Turkmen', count: 32408265 },
...]
English: 2.655 mld Chinese: 1.414 mld Hindi: 1.296 mld ...
Pokračujeme s higher-order funkciami v poliach.
Úlohy:
[ { currency: 'New Zealand dollar',
countries: [ 'Cook Islands', 'New Zealand', 'Niue', 'Pitcairn', 'Tokelau' ],
count: 5 },
{ currency: 'Central African CFA franc',
countries: ['Cameroon', 'Central African Republic', 'Chad', 'Congo', 'Equatorial Guinea', 'Gabon'],
count: 6 },
...
]
Pokračujeme s higher-order funkciami v poliach. Povieme si ako reťaziť funkcie prostredníctvom rúry.
Úlohy:
{
Spanish: ['Argentina', 'Bolivia (Plurinational State of)', 'Chile',...],
Portuguese: [ 'Brazil' ],
English: [ 'Falkland Islands (Malvinas)', 'Guyana',...],
...
}
[ { language: 'Spanish', countries: ['Argentina', 'Bolivia (Plurinational State of)', 'Chile',...]},
{ language: 'Portuguese', countries: [ 'Brazil' ]},
{ language: 'English', countries: [ 'Falkland Islands (Malvinas)', 'Guyana',...]},
...
]
[ { currency: 'New Zealand dollar',
countries: [ 'Cook Islands', 'New Zealand', 'Niue', 'Pitcairn', 'Tokelau' ],
count: 5 },
{ currency: 'Central African CFA franc',
countries: ['Cameroon', 'Central African Republic', 'Chad', 'Congo', 'Equatorial Guinea', 'Gabon'],
count: 6 },
...
]
Pokračujeme s higher-order funkciami v poliach - flat, flatMap, reduce a reduceRight.
Úlohy:
[ { name: 'Bangladesh', area: '147570 km2' },
{ name: 'Brazil', area: '8515767 km2' },
{ name: 'China', area: '9640011 km2' },
...
]
[ { iso639_1: 'es', iso639_2: 'spa', name: 'Spanish', nativeName: 'Español' },
{ iso639_1: 'gn', iso639_2: 'grn', name: 'Guaraní', nativeName: "Avañe'ẽ" },
{ iso639_1: 'ay', iso639_2: 'aym', name: 'Aymara', nativeName: 'aymar aru'},
...
]
Porovnáme si klasické a arrow funkcie a použitie this v nich. Vysvetlíme si základné higher-order funkcie v poliach - forEach, filter, map. Budeme pracovať s JSON dokumentom countries.json podľa úloh uvedených nižšie.
Úlohy:
Dokončíme si rozprávanie o CSS pre tento rok krátkou ukážkou použitia clip-path v kombinácii so skrolovaním. Potom sa začneme baviť hlbšie o jazyku Javascript. Prejdeme si také súčasti jazyka JavaScript, ktoré sa v Jave nenachádzajú - globálne vs. lokálne premenné a konštanty, template strings, pravdivé a nepravdivé výrazy, rôzna práca s objektami a poľami, object destructuring, spread operátor
Povieme si o Sass a spravíme si vrstevnatý text.
Vyrobíme si 3D kocku a spravíme z nej checkbox.
Dnes si spravíme carousel.
Dnes sa budeme venovať animáciám.
Dnes sa budeme venovať naprv použitiu pseudoelemenov pri tvorbe responzívnej tabuľky a potom prejdeme na štýlovanie formulárov, vrátanie štýlovania validity aj s hláškami na spätnú väzbu. Využijeme pri tom významne CSS premenné.
Ukážeme si aké neskutočne užitočné vedia byť pseudoelementy ::before a ::after na viacerých miniprojektíkoch.
Dokončíme tému grid layout predstavením hodnoty subgrid a jej použitia. Potom si povieme o premenných v CSS a aké vedia byť užitočné. V zadaní použite premenné aspoň pri farebnej téme projektu.
Pokračujeme v téme Grid layout.
Na začiatok dorobíme animovanú galériu a potom si ukážeme veľkého "konkurenta" Flexboxu na nastavovanie rozmiestnenia obsahu a to Grid layout. Zadanie je iba na precvičovanie počas hodiny, nie ako domáca úloha.
Dorobíme si responzívny navbar, pričom si precvičíme aj flexbox a javascript. Ukážeme si nastavovanie responzivity na základe veľkosti kontajnerov. Začneme animovanú galériu.
Dokončíme projekt s rotačnou stránkou. Porozprávame sa o responzivite stránok. Ukážeme si klasické @media dopyty podľa vlastností max-width a min-width, ale aj modernejšie možnosti @media dopytov.
Ukážeme si, ako cez Javascript meniť triedy elementom v DOM modeli. Spravíme si projekt s rotačnou stránkou.
Porozprávame sa o transformácii elementov - posun, rotácia a zošikmenie. Následne si povieme o základnom kameni animácií, o vlastnosti transition.
Spoločne si doklepneme návrh stránky z minula a zahráme sa so žabkami.
Pokračujeme v téme Flexbox. Možno si ukážeme podstatné časti domácej, ak bude záujem a nastavíme si základný responzívny layout kostry stránky cez Flexbox.
Pokračujeme v téme Flexbox. Domáca je do nedele 25.1.2026 18:00.
Začneme tému Flexbox, čo je asi najpopulárnejší layoutovací nástroj súčasnosti. Domáca nebude.
Na začiatku si vzorovo vyriešime projekt Dúha. Na záver si dokončíme tému poziciovanie, konkrétne fixed a sticky.
Povieme si o všetkých možnostiach poziciovania, dnes stihneme - static, relative a absolute.
Dokončíme rozprávanie o pozadiach ako obrázkových tak aj grandientných. Domáca je do 11.1.2026 18:00
Povieme si o základných jednotkách vzdialenosti.Vysvetlíme si kedysi široko využívanú schopnosť obtekania. Začneme tému pozadia. Obrázky na hranie.
Prejdeme si domácu Špagety 2 a vypichneme dôležité časti, kde boli časté problémy. Vysvetlíme si ako funguje špecifickosť selektorov.
Porozprávame si o pseudotriedach a pseudoelementoch a začneme domácu úlohu Špagety 2, ktorej dokončenie bude na domácu úlohu.
Dokončíme projekt stránky tvorcu keramiky. Začneme rozprávanie o súdoreneckých spojkách v selektoroch a atribútových selektoroch.
Dnes dáme novým veciam na chvíľu pokoj. Budeme spoločne vytvárať trochu komplexnejšiu webstránku pre tvorcu keramiky.
Prejdeme si náš projekt vizitka a porozprávame o ďalších vlastnostiach súvisiacich s box modelom - tieňovaní, rámčekoch outline, flexibilných veľkostiach a ako sa vysporiadať s obsahom, ktorý do bloku nevojde.
Porozprávame asi najdôležitejšiu súčasť CSS a to je box model. Predstavíme si jeho hlavné súčasti content, padding, border a margin. Pri ich nastavovaní nemôžeme vynechať okrem absolútnych aj relatívne veľkosti týchto vlastností a ich kombináciu. Povieme si o tom, ako tieto vlastnosti fungujú pre inline, inline-block a block elementy aj ako medzi nimi prepínať cez vlastnosť display. Na záver si povieme o zaobľovaní rámčekov.
Porozprávame si spôsoboch dekorovania textu a liniek - tiene, čiary; transofrmácie textu napr. na veľké písmená. Predstavíme si spôsoby úpravy odrážok v číslovaných aj nečíslovaných zoznamoch.Domáca bude 7. zadanie - do utorka 18.11. 18:00.
Nastavíme si medzery v písme, výšku písma. Povieme si ako použiť externé fonty z Google fonts a ako importovať externé fonty do lokálnych súborov. Dnes domáca nebude.
Budeme sa venovať nastavovaniu vlastností fontov - family, size, weight, style, align. Nastavíme si medzery v písme, výšku písma. Povieme si ako použiť externé fonty z Google fonts. Dnes domáca nebude, užite si prázdniny.
Dokončíme rozprávanie o farbách. Povieme si o využití atribútov id a class pri určení cieľov štýlovania a možno už začneme rozprávať o fontoch. Domáca dnes nebude.
Predstavíme si 3 základné spôsoby, ako vkladať CSS do HTML, potom začneme rozprávanie o farbách. Domáca bude 6. zadanie - do utorka 21.10. 18:00.
Predstavíme si spôsob pridania sémantiky zvanú Mikrodáta. Dnes domáca nebude.
Dokončíme sémantické elementy a porozprávame si o pokročilých metódach pridávania sémantiky cez Mikroformáty. Dnes domáca nebude.
Porozprávane si o tabuľkách v HTML - domáce zadanie bude z nich. Začneme rozprávanie o sémantických elemetoch. Piate zadanie slúži iba ako štartovací projektík.
Povieme si o tom, ako sa vkladajú do HTML špeciálne znaky cez HTML Entity. Z rýchlika si predstavíme niekoľko nesémantických elementov ako <meter>, <progress>, <details>, <dialog>, <pre>, <template>, <iframe>, <video> a podobne. Dnes domáca nebude.
Prejdeme si formulárové elementy - input typy text, password, number, email, color, ale aj elementy textarea, select, radio, checkbox, range a fieldset. Zadanie treba vypracovať do nedele 5.10.2025 18:00.
Prejdeme si základné formulárové elementy input (typu text), form a label
Porozprávame si o linkách a obrázkoch.
Dokončíme si skúšanie práce s gitom s našim prvým zadaním aj so zdrojákmi z výučby. Ukážeme si ako efektívne pracovať s Visual Studio Code.
Vysvetlíme si základnú prácu s gitom. Ukážeme si základnú kostru HTML5 a ošaháme si niekoľko základných HTML elementov.
Rozbeháme si prostredie - nainštalujeme si Git, Visual Studio Code, vytvoríme si kontá na Githube a vytvoríme si svoj repozitár prvého zadania v classroom.github.com.