15. Angular - Material SnackBar. univerzálne spracovanie HTTP chýb
Vytvoríme si službu na vypisovanie informačných a chybových správ cez Matrerial Snackbar. Napíšeme si univerzálnu ochytávaciu metódu na HTTP chyby.
Predmet Webové technológie je určený pre študentov Košickej akadémie softvérového vývoja, druhý ročník. Predmet poskytuje vedomosti a skúsenosti v práci s Javascript-om, Typescript-om a frameworkom Angular.
Vytvoríme si službu na vypisovanie informačných a chybových správ cez Matrerial Snackbar. Napíšeme si univerzálnu ochytávaciu metódu na HTTP chyby.
Dokončíme prihlasovanie.
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 na príklade tabuľky používateľov použitie Material knižnice a to rovno cez komponent mat-table s jednoduchými stĺpcami mat-text-column. Na zobrazenie in0ho komponentu použijeme router.
Vytvoríme si service a napojíme sa na REST server. Pohráme sa so spracovaním rôznych druhov HTTP odpovedí.
Server spustíme v konzole, ak máme nainštalovanú javu aspoň vo verzii 17, príkazom:
Porozprávame si o entitách a princípe MVC v komponentoch, vytvoríme si službu na správu zoznamu používateľov.
Vytvoríme si Angular projekt, vysvetlíme si základnú štruktúru, vytvoríme si nový komponent a vypíšeme hodnoty signálnych premenných.
Budeme pracovať s JSON dokumentmi získanými z adresy https://swapi.dev/ podľa úloh uvedených nižšie.
Úlohy:
[ { name: 'Luke Skywalker', specimen: [] },
{ name: 'C-3PO', specimen: [ 'Droid' ] },
{ name: 'R2-D2', specimen: [ 'Droid' ] },
{ name: 'Darth Vader', specimen: [] },... ]
[ { 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' ] },
...]
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',... ]
[ '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: [] },... ]
[ { 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' ] },
...]
Budeme pracovať s JSON dokumentom countries.json podľa úloh uvedených nižšie.
Úlohy:
{
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 ...
Povieme si ako reťaziť funkcie prostredníctvom rúry. Budeme pracovať s JSON dokumentom countries.json, podľa úloh uvedených nižšie.
Ú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 },
...
]
{
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 ...
Povieme si ako reťaziť funkcie prostredníctvom rúry. Budeme pracovať s JSON dokumentom countries.json, podľa úloh uvedených nižšie.
Ú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 },
...
]
Vysvetlíme si ďalšie higher-order funkcie v poliach - flat, flatMap, reduce a reduceRight. Budeme pracovať s JSON dokumentom countries.json, podľa úloh uvedených nižšie.
Úlohy:
[ { 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'},
...
]
{
Spanish: ['Argentina', 'Bolivia (Plurinational State of)', 'Chile',...],
Portuguese: [ 'Brazil' ],
English: [ 'Falkland Islands (Malvinas)', 'Guyana',...],
...
}
Vysvetlíme si základné higher-order funkcie v poliach - forEach, filter, map, flat, flatMap, reduce a reduceRight. Skúsime si nejaký Typescriptový súbor stranskriptovať a spustiť. Ak stihneme, budeme pracovať s JSON dokumentom countries.json podľa úloh uvedených nižšie.
Úlohy:
[ { name: 'Bangladesh', area: '147570 km2' },
{ name: 'Brazil', area: '8515767 km2' },
{ name: 'China', area: '9640011 km2' },
...
]
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, klasické vs. arrow funkcie a použitie this v nich.