You are on page 1of 3

Elektrotehnički fakultet u Sarajevu

Razvoj softvera
Back-end web tehnologije

Projekat - Spirala 1
Na ovom projektu pravit ćemo planer online predavanja, raspored nastave i pregled učesnika i
njihove statistike. Aplikacija će imati dva tipa korisnika, studenti i nastavnici. Zasada je potrebno
implemenirati JS klase koje su opisane u nastavku i njihove testove. Ove klase ćemo kasnije
koristiti kako bi aplikacija imala tražene funkcionalnosti, zasada web aplikacija ne treba imati
grafički interfejs tj. frontend.

Zadatak 1. [2B]​ Implementirajte klasu ​GoogleMeet​ u fajlu googlemeet.js, ova klasa ima statičke
metode ​dajZadnjePredavanje​ i ​dajZadnjuVježbu​. Obje metode primaju string kao ulaz koji je u
html formatu. String predstavlja dio HTML koda c2 stranice nekog predmeta. Ovaj kod sadrži div
sa klasom ​course-content​ u kojoj je ul lista sa itemima koji predstavljaju sedmične sekcije na c2
stranici predmeta. Primjer na slici ispod.

Kada funkcija (vrijedi za obje) primi string koji sadrži ovaj dio stranice ona ga parsira sa metodom
DOMParser​ i u rezultujućem objektu pronađe sve linkove (a tagove). Nad ovim rezultatom
možete koristiti standardne metode za pretraživanje DOM-a.
U slučaju poziva funkcije ​dajZadnjePredavanje​ rezultat je cijeli url iz ​<a>​ tag-a koji sadrži
meet.google.com u url-u i u nazivu sadrži dio teksta ‘predavanj’ i nalazi se u elementu liste
weeks​ sa najvećim brojem id-a (npr. ako ovakav link ima u ​section-4​,​section-5​,​section-6​ treba se
vratiti link iz ​section-6​).
U slučaju poziva funkcije ​dajZadnjuVježbu ​rezultat je cijeli url iz ​<a>​ tag-a koji sadrži
meet.google.com u url-u i u nazivu sadrži dio teksta ‘vjezb’ ili ‘vježb’ i nalazi se u elementu liste
weeks​ sa najvećim brojem id-a.
Ako nije moguće pronaći traženi link vratite null.

Za testiranje ovog zadatka napravite minimalni html dokument (googlemeet.html) gdje je moguće
odabrati 5 primjera ulaznog stringa i dva dugmeta za poziv metoda klase, rezultat vratite u
alert-u. Hardkodirane primjere imate u fajlu ulaz1.js na bitbucket-u.
Zadatak 2. [2B]​ Napišite sljedeće testove za prethodni zadatak:
- Test kada nema niti jednog predavanja (rezultat null)
- Test kada nema niti jedne vježbe (rezultat null)
- Test kada je string prazan (rezultat null)
- Test kada svaka druga sedmica ima vježbu (rezultat url vježbe iz posljednje sedmice)
- Test kada imaju linkovi sa ispravnim nazivima ali url ne sadrži meet.google.com (null)
- Test kada postoje linkovi sa ispravnim url-om ali ne sadrže tekst ‘vjezb’,’vježb’ i
’predavanj’ (null)
- Test kada se link nalazi van ul liste (validan rezultat iz posljednje sedmice isključujuću link
koji je val liste)
- Test kada su predavanja i vježbe samo u prvoj sedmici (rezultat url vježbe iz prve
sedmice i url predavanja iz prve sedmice)
- Test kada nije validan html kod - kada ne sadrži div ‘course-content’ sa ul listom ‘weeks’ i
elementima liste ‘section-*’.

U testne primjere ulaz1.js možete dodati potrebne slučajeve za pokretanje ovih testova.
Napravite par primjera klase GoogleMeet koji su pogrešni i ne prolaze ove testove, njih snimite u
fajlove googlemeetGreska1.js, googlemeetGreska2.js i sl. Napravite i posebne html fajlove za
pokretanje testova testZ1ispravno.html, testZ1Greska1.html i sl. Test treba biti isti i za ispravne i
za neispravne klase.

Zadatak 3. [3B]​ Napravite klasu ​Raspored​ u fajlu raspored.js. Ova klasa ima konstruktor koji
prima raspored u csv formatu:
Naziv predmeta, aktivnost, dan, vrijeme početka i vrijeme kraja
Npr.
BWT,predavanje,petak,09:00,12:00
BWT-grupa1,vjezbe,ponedjeljak,10:00,11:30
RMA-grupa2,vjezbe,utorak,14:00,15:30

I spašava ga kao niz objekata u atributu ​raspored​ ove klase
raspored=[{naziv:”BWT”,aktivnost:”predavanje”,dan:”petak”,start:”09:00”,end:”12:00”},...];
Klasa pored konstruktora ima metode, ​dajTrenutnuAktivnost,​ ​dajSljedecuAktivnost​ i
dajPrethodnuAktivnost​.
Sve metode kao parametar primaju vrijeme kao string u formatu DD-MM-YYYYTHH:mm:ss i
string koji sadrži naziv grupe. Primjer validnog vremena 10-10-2020T12:00:00

Metoda ​dajTrenutnuAktivnost​ vraća naziv predmeta kojem trenutno traje predavanje ili vježbe
ako je grupa ispravna i koliko je ostalo vremena do kraja (u minutama).Primjer “BWT 110”.
Ukoliko nema niti jedne aktivnosti u ovom vremenu vratite string “Trenutno nema aktivnosti”.

Metoda ​dajSljedecuAktivnost​ vraća naziv predmeta čija aktivnost slijedi u šta nije uključena
aktivnost koja trenutno traje (ako postoji takva) i vrijeme koliko ima do navedene aktivnosti u
minutama. Primjer “RMA 10”. Ako vrijeme do sljedeće aktivnosti prelazi u sljedeći dan vratite
“Nastava je gotova za danas”.

Metoda dajPrethodnuAktivnost vraća naziv predmeta čija aktivnost je završena prije


proslijeđenog vremena, u ovo nije uključena aktivnost koja trenutno traje (ako postoji takva).

Napomena, za aktivnost vježbi uzmite u obzir da grupa treba biti ispravna.


Za testiranje ovog zadatka napravite minimalni html dokument (raspored.html) gdje je moguće
odabrati neki od primjera poziva metoda ove klase, rezultat vratite u alert-u. Hardkodirane
primjere imate u fajlu ulaz2.js na bitbucket-u.

Zadatak 4. [3B] ​Napravite testove za prethodni zadatak:


- dajTrenutnuAktivnost kada nema trenutne aktivnosti u datom vremenu
- dajTrenutnuAktivnost na početku neke aktivnosti
- dajTrenutnuAktivnost na kraju neke aktivnosti
- dajTrenutnuAktivnost kada postoji vježba u datom vremenu ali nije ispravna grupa
- dajTrenutnuAktivnost kada postoji vježba u datom vremenu i ispravna je grupa
- dajPrethodnuAktivnost za slučaj kada je prva prethodna aktivnost vježba sa pogrešnom
grupom, tada trebate vratiti aktivnost prije nje
- dajPrethodnuAktivnost prije prve aktivnosti u ponedjeljak, treba vratiti posljednju aktivnost
iz petka, ili četvrtka ako nema aktivnosti u petak itd.
- dva ekvivalentna testa za dajSljedecuAktivnost kao za metodu dajPrethodnuAktivnost

U testne primjere ulaz2.js možete dodati potrebne slučajeve za pokretanje ovih testova.
Napravite par primjera klase Raspored koji su pogrešni i ne prolaze ove testove, njih snimite u
fajlove rasporedGreska1.js, rasporedGreska2.js i sl. Napravite i posebne html fajlove za
pokretanje testova testZ2Ispravno.html, testZ2Greska1.html i sl. Test treba biti isti i za ispravne i
za neispravne klase.

Rok za rad na spirali je 15.11.2020. Za spiralu trebate napraviti privatni repozitorij sa nazivom
bwt20PXXXX​, gdje je XXXX broj vašeg indeksa(bez st). Repozitorij trebate podijeliti sa
predmetnim asistentom, demonstratorom i profesoricom.

Primjeri ulaznih podataka - ​link


Mjesto za postavljanje pitanja - ​link

You might also like