ПИА/Јануар 2022
Ispit u januarskom ispitnom roku 2022. godine održan je 21. januara. Bilo je moguće raditi u Java Server Faces ili Angular i Node.js tehnologijama, od čega je za prvi kolokvijum bila Java Server Faces a za drugi Angular i Node.js tehnologije. Postavka zadatka je bila ista za oba kolokvijuma. Svaki kolokvijum je trajao 2 sata, dok ako se rade oba to traje 3 sata. Dostupne su baze podataka za MySQL i MongoDB.
Postavka
Napraviti sledeću mini internet aplikaciju za piceriju.
Na početnoj strani aplikacije, napraviti HTML formu, preko koje mogu da se prijavljuju korisnici sistema, a to su kupci i radnici. Korisnici treba da imaju mogućnost unošenja korisničkog imena i lozinke i da pomoću radio dugmeta odaberu: da li se prijavljuju u sistem kao kupci ili radnici. U slučaju ispravno unetih podataka, korisniku treba omogućiti rad sa ostatkom sistema (za svaki tip treba prikazati posebnu početnu stranicu nakon prijavljivanja). Ukoliko korisnik ne unese neki od podataka ili unese pogrešne podatke, potrebno je ispisati poruku greške crvenim slovima sa mogućnošću ispravljanja greške. Po uspešnoj prijavi u sistem, korisniku dati i opciju da se odjavi. [7 poena]
Kupac nakon prijave na sistem vidi svoje informacije (ime i prezime) i tabelarni prikaz svojih narudžbina (identifikator, veličinu pice, nazive dodataka i status narudžbine). [4 poena] Ispod tabelarnog prikaza nalazi se forma za naručivanje pice. Korisnik iz padajuće liste bira veličinu pice (fiksni podaci: mala, srednja, velika). Ispod odabira veličine biraju se dodaci za picu, putem niza checkbox-ova. Svaki dodatak je jedan checkbox, koji je onemogućen (disabled) ukoliko dodatka nema na stanju. Prikazati naziv i količinu dodatka. [6 poena] Klikom na dugme "Potvrdi" narudžbina se dodaje u bazu sa statusom "nova" (može da se ne odabere nijedan dodatak). Nakon dodavanja narudžbine treba osvežiti stranicu. [3 poena]
Radnik nakon prijave na sistem vidi tabelarni prikaz svih narudžbina u sistemu. [2 poena] Pored novih narudžbina u sistemu (status "nova") treba prikazati dugmad za prihvatanje ili odbijanje te narudžbine (prihvaćene narudžbine imaju status "prihvacena", odbijene imaju status "odbijena"), čime se menja status porudžbine. [5 poena] Prihvatanje narudžbine podrazumeva da se i ažurira količina svakog odabranog dodatka (smanji za 1). Odbijanje nema uticaja na količinu. Nakon promene statusa, osvežiti stranicu. [3 poena] Ispod tabele sa narudžbinama nalazi se tabela sa svim dodacima pomoću koje se može dopuniti i njihovo stanje. Tabela treba da sadrži naziv dodatka, trenutnu količinu proizvoda na stanju i dugme za naručivanje tog dodatka. Klikom na dugme za naručivanje se automatski uvećava količina na stanju za 5. [3 poena] Dodaci kojih nema na stanju treba da budu obojeni crvenom bojom. [2 poena]
Rešenje
Java Server Faces
- Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.
Angular i Node.js
Rešenje se može preuzeti kao ZIP arhiva. Kako biste ga pokrenuli:
- uvezite kolekcije iz JSON fajlova u
local
bazu unutar MongoDB - otvorite tri terminala
- u jednom se pozicionirajte unutar
backend
direktorijuma, pokrenitenpm install
a zatimnpm run watch-ts
direktorijuma (kako bi se konstantno nadgledao fajl sistem za promene u TypeScript fajlovima i automatski prevodio u JavaScript) - u drugom se pozicionirajte unutar
backend
direktorijuma i pokrenitenpm run watch-node
(kako bi se konstantno nadgledao prevedeni JavaScript i restartovao Node.js čim se primeti promena) - u trećem se pozicionirajte unutar
frontend
direktorijuma i pokrenitenpm install
a zatimnpm start
(kako bi se pokrenuo frontend server)
Kad posetite localhost:4200, trebalo bi da vidite frontend i da se pri svakoj izmeni frontend ili backend fajlova oni automatski prevode i pokreću. Ignorišite sve "sigurnosne greške" koje bi npm install
mogao da vam prikaže.