Meeskond "DigiRiiul": Difference between revisions

From ICO wiki
Jump to navigationJump to search
Jelken (talk | contribs)
kustutasin üleliigse graafi
Jelken (talk | contribs)
pisiparandus (Goodreads API => Google Books API)
Line 12: Line 12:


'''Põhifunktsionaalsus:'''<br>
'''Põhifunktsionaalsus:'''<br>
Kasutajad saavad oma riiulile lisada raamatuid, mida nad on lugenud, mis on neil olemas või mida nad soovivad tulevikus lugeda. Samuti saab kasutaja raamatutele jätta kommentaare ja arvustusi. Rakendus on liidestatud avalike API-dega nagu Goodreads, mis võimaldab raamatute lisamisel tärkandmed ja kaanepildi automaatselt alla tõmmata. Samuti võimaldab rakendus pidada järge selle üle, kellele on raamatuid välja laenutatud. Rakendusel on ka graafiline vaade, mis koosneb raamatute pealiskaantest (võrdluseks nt iTunes).
Kasutajad saavad oma riiulile lisada raamatuid, mida nad on lugenud, mis on neil olemas või mida nad soovivad tulevikus lugeda. Samuti saab kasutaja raamatutele jätta kommentaare ja arvustusi. Rakendus on liidestatud avalike API-dega nagu Google Books API, mis võimaldab raamatute lisamisel tärkandmed ja kaanepildi automaatselt alla tõmmata. Samuti võimaldab rakendus pidada järge selle üle, kellele on raamatuid välja laenutatud. Rakendusel on ka graafiline vaade, mis koosneb raamatute pealiskaantest (võrdluseks nt iTunes).


'''Lisafunktsionaalsus:''' <br>
'''Lisafunktsionaalsus:''' <br>
Line 78: Line 78:
''Data Access Layer'' - siia lähevad kõik andmebaasiga seonduvad meetodid. Iga olemi kohta tekitatakse eraldi DAO objekt. Rakendatakse O/RM ''Entity Framework'' tehnoloogiat, et minimeerida andmebaasiga suhtlemist puudutava koodi hulka. Kasutaja poolt sisestatud andmete valideerimine saavutatakse samuti ''Entity Framework'' abil.
''Data Access Layer'' - siia lähevad kõik andmebaasiga seonduvad meetodid. Iga olemi kohta tekitatakse eraldi DAO objekt. Rakendatakse O/RM ''Entity Framework'' tehnoloogiat, et minimeerida andmebaasiga suhtlemist puudutava koodi hulka. Kasutaja poolt sisestatud andmete valideerimine saavutatakse samuti ''Entity Framework'' abil.


''Business Logic'' - siia läheb kõik, mis ei puuduta otseselt graafilist liidest või andmebaasiga suhtlemist. Muu hulgas tähendab see avalikest veebiteenustest andmete küsimist (avalike API-dega suhtlemist), kasutaja sisselogimisega seotud toiminguid jms. Veebiteenustega suhtlemine (Goodreads API, Open Library Covers API jms) peidetakse ühe objekti taha kasutades ''Facade'' mustrit.  
''Business Logic'' - siia läheb kõik, mis ei puuduta otseselt graafilist liidest või andmebaasiga suhtlemist. Muu hulgas tähendab see avalikest veebiteenustest andmete küsimist (avalike API-dega suhtlemist), kasutaja sisselogimisega seotud toiminguid jms. Veebiteenustega suhtlemine (Google Books API, Open Library Covers API jms) peidetakse ühe objekti taha kasutades ''Facade'' mustrit.  


Testandmebaasi server asub rakendusega samas arvutis, kuid live-versioonis hakkab rakendusi teenindama keskne andmebaas. Rakenduse jaoks on renditud Azures MS SQL Server.
Testandmebaasi server asub rakendusega samas arvutis, kuid live-versioonis hakkab rakendusi teenindama keskne andmebaas. Rakenduse jaoks on renditud Azures MS SQL Server.
Line 103: Line 103:
** Slideshow: Ekraani keskel näidatakse kolme raamatukaant, mis on valitud sortimise järgi esimestel kohtadel. Akna paremal äärel on näha poolikult järgmise raamatu kaant. Akna vasakul äärel on valitud sortimise põhjal näha viimase raamatu kaant poolikult. Kui raamatu kaant pole lisatud, kuvatakse kohahoidja. Hõljudes hiirega raamatukaane peal, ilmub kaane alla raamatu nimi ning autor. Vaate mõlemas ääres on nooled, millele vajutades saab liikuda ühe raamatu võrra edasi või tagasi. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
** Slideshow: Ekraani keskel näidatakse kolme raamatukaant, mis on valitud sortimise järgi esimestel kohtadel. Akna paremal äärel on näha poolikult järgmise raamatu kaant. Akna vasakul äärel on valitud sortimise põhjal näha viimase raamatu kaant poolikult. Kui raamatu kaant pole lisatud, kuvatakse kohahoidja. Hõljudes hiirega raamatukaane peal, ilmub kaane alla raamatu nimi ning autor. Vaate mõlemas ääres on nooled, millele vajutades saab liikuda ühe raamatu võrra edasi või tagasi. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
** List view: akna keskele tekib tabel raamatutest valitud sortimise järgi. Kuvatakse raamatu nimi, autor ning valitud sortimise tulp. Kui kirjeid on rohkem kui rakenduse aken mahutab, tekib paremasse äärde kerimisriba. Kui kirjeid on rohkem, kui teatud fikseeritud arv (nt 20) siis kuvatakse lehekülgede kaupa. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
** List view: akna keskele tekib tabel raamatutest valitud sortimise järgi. Kuvatakse raamatu nimi, autor ning valitud sortimise tulp. Kui kirjeid on rohkem kui rakenduse aken mahutab, tekib paremasse äärde kerimisriba. Kui kirjeid on rohkem, kui teatud fikseeritud arv (nt 20) siis kuvatakse lehekülgede kaupa. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
* Add Book: avab vaate raamatu lisamiseks. Lisamisaknas on kõik raamatuga seonduvad väljad (autor, pealkiri, ISBM jms) ning nupud “Add book”, mis lisab raamatu kasutaja riiulile, ning “Cancel” lisamise tühistamiseks. ISBM või pealkirja välja täitmisel küsib rakendust avalikest veebiteenustest (Goodreads API, Open Library Covers API jms) raamatu andmed ning pakub kasutajatele võimalust väljad eeltäita.
* Add Book: avab vaate raamatu lisamiseks. Lisamisaknas on kõik raamatuga seonduvad väljad (autor, pealkiri, ISBM jms) ning nupud “Add book”, mis lisab raamatu kasutaja riiulile, ning “Cancel” lisamise tühistamiseks. ISBM või pealkirja välja täitmisel küsib rakendust avalikest veebiteenustest (Google Books API, Open Library Covers API jms) raamatu andmed ning pakub kasutajatele võimalust väljad eeltäita.
* My Profile: saab uuendada enda profiiliga seonduvaid andmeid
* My Profile: saab uuendada enda profiiliga seonduvaid andmeid
* Log out : logib kasutaja rakendusest välja, aga jätab rakenduse tööle  
* Log out : logib kasutaja rakendusest välja, aga jätab rakenduse tööle  

Revision as of 12:13, 8 November 2014

Meeskond "DigiRiiul" (1. etapp)

Jaan Elken (projektijuht)
Henri Põld
Morris Mänd
Riho Uusjärv
Martin Orgusaar

Projektiidee

Projekti käigus luuakse nn virtuaalne raamaturiiul "DigiRiiul"

Põhifunktsionaalsus:
Kasutajad saavad oma riiulile lisada raamatuid, mida nad on lugenud, mis on neil olemas või mida nad soovivad tulevikus lugeda. Samuti saab kasutaja raamatutele jätta kommentaare ja arvustusi. Rakendus on liidestatud avalike API-dega nagu Google Books API, mis võimaldab raamatute lisamisel tärkandmed ja kaanepildi automaatselt alla tõmmata. Samuti võimaldab rakendus pidada järge selle üle, kellele on raamatuid välja laenutatud. Rakendusel on ka graafiline vaade, mis koosneb raamatute pealiskaantest (võrdluseks nt iTunes).

Lisafunktsionaalsus:
- Muud sisutüübid (filmid, muusika jne)
- Facebooki API-ga sidumine
- Rakenduse kaudu saab kasutaja vaadata teiste kasutajate raamaturiiuleid ja neid kommenteerida.

Tehnoloogiad

Rakendus ehitatakse WPF.NET tehnoloogiale.
Andmebaas ehitatakse Microsoft SQL Serverile.
Andmebaasiga suhtlemiseks kasutatakse ORM mappingut (ADO.NET Entity Framework tehnoloogia).

Rakenduse ehitamisel kasutatakse versioonihaldussüsteemi TFS aadressil digiriiul.visualstudio.com

Logi

10.10.2014
Skype grupikõne. Projektiidee ja funktsionaalsuse välja mõtlemine.

22.10.2014
Skype vestlus. Projektiidee arutamine. Projekti nime välja mõtlemine. TFS konto loomine.

30.10.2014
Skype kõne. Analüüsidokumendi koostamine.

Analüüs (2. etapp)

Rakenduse kirjeldus

Mida rakendus endas sisaldab?

Rakendus seisneb digitaalses raamaturiiulis, kuhu kasutaja saab lisada raamatuid, mida ta on varem lugenud, mis tal on olemas või mida ta soovib tulevikus lugeda. Kasutaja saab lisada raamatutele ka kommentaare, arvustusi, hindeid ning märksõnu (tag-e). Digiriiul on liidestatud ka avalike API-dega, mille abil saab kasutaja enda raamatu kohta lisanduvaid andmeid, mida ei pruugi ise lisada. Rakendusel on graafiline vaade, mis kuvab raamatute pealiskaaned, et kasutajal oleks kiire ülevaade enda raamatutest.

Võimaluse korral lisatakse ka funktsionaalsus, mis laseb vaadata teiste kasutajate raamaturiiuleid, jätta neisse kommentaare, lisada teisi kasutajaid oma jälgitavate nimekirja ning saada oma ajajoonele nende tegevustest uuendusi. Kui aega jätkub, siis luuakse kasutajale ka võimalus jälgida, kellele on raamatuid välja laenutatud.

Rakenduse eesmärk

Rakenduse eesmärgiks on pakkuda kasutajale mugavat võimalust hallata kõike lugemisega seonduvat otse oma töölaualt. Rakendus on võimalikult lihtsalt kasutatav.

Must have

Kasutaja loomine, profiili uuendamine ja kustutamine
Raamatute lisamine
Raamatutele kommentaaride, arvustuste, hinnete ning märksõnade (tag-ide) lisamine
Digiriiuli liidestamine avalike API-dega, et saada lisanduvat infot
Filtreerimine ehk žanri/autori jms järgi raamatute näitamine
Graafiline vaade (kollaažh raamatukaantest)

Nice to have

Teiste kasutajate raamaturiiulite sirvimine ja kommenteerimine rakenduse kaudu
Teiste kasutajate jälgimine
Ajajoon, mis näitab jälgitud kasutajate viimaseid toiminguid rakenduses
Välja laenatud raamatute üle arvestuse pidamine
Muu meedia: filmid, seriaalid, mängud jms.

Rakenduse üldine struktuur / kasutatavad arendusmustrid

Rakenduse üldine struktuur järgib MVVM (Model View ViewModel) mustrit, kus:

  • View kihis graafiline kasutajaliides
  • ViewModel kihis kiht seob Model kihti ja View kihti
  • Model kiht sisaldab Business Logic Layer ja Data Access Layer-it

Data Access Layer - siia lähevad kõik andmebaasiga seonduvad meetodid. Iga olemi kohta tekitatakse eraldi DAO objekt. Rakendatakse O/RM Entity Framework tehnoloogiat, et minimeerida andmebaasiga suhtlemist puudutava koodi hulka. Kasutaja poolt sisestatud andmete valideerimine saavutatakse samuti Entity Framework abil.

Business Logic - siia läheb kõik, mis ei puuduta otseselt graafilist liidest või andmebaasiga suhtlemist. Muu hulgas tähendab see avalikest veebiteenustest andmete küsimist (avalike API-dega suhtlemist), kasutaja sisselogimisega seotud toiminguid jms. Veebiteenustega suhtlemine (Google Books API, Open Library Covers API jms) peidetakse ühe objekti taha kasutades Facade mustrit.

Testandmebaasi server asub rakendusega samas arvutis, kuid live-versioonis hakkab rakendusi teenindama keskne andmebaas. Rakenduse jaoks on renditud Azures MS SQL Server.

Testimine

Aja jätkumise korral kasutatakse rakenduse osade testimiseks automaattestimist (Microsoft Unit Test Framework). Tõenäoliselt selle jaoks siiski aega ei jätku.

Graafiline liides

Graafiline liides koosneb menüüribast akna ülemises ääres ning “riiulivaatest”, mis jääb menüüribast allapoole. Menüüriba koosneb kahest nupust, “My shelf” ja “View”

“My shelf”

Kui kasutaja ei ole sisse loginud, kuvatakse talle kolm alammenüüd:

  • Log in: Kasutajanimi, parool, logi-sisse nupp, kasutaja registreerimise nupp (mis avab akna kasutaja registreerimiseks) ning “unustasid parooli” nupp. Kui üks väljadest on tühi, kuvatakse veateade ning kasutajal on võimalus uuesti väljad ära täita.
  • Register: Kasutajanimi, parool, uuesti parool, e-mail (parooli meeldetuletamiseks) ja “registreeri” nupp. Valideerib kasutajanime ja parooli (parool ei tohi olla liiga lihtne).
  • Exit: sulgeb rakenduse (küsib hüpikaknas kinnitust)


Kui kasutaja on sisse loginud, kuvatakse talle alljärgnevad menüüd:

  • My books: avaneb kasutaja riiul. Vaate üleval on kontrollpaneel, mis koosneb 4 nupust. Esimene lülitab sisse “slideshow” vaate, teine lülitab sisse “list” vaate. Kolmas nupp on rippmenüü, kust saab valida sortimise parameetri. Neljas nupp on sortimise järjekord.
    • Slideshow: Ekraani keskel näidatakse kolme raamatukaant, mis on valitud sortimise järgi esimestel kohtadel. Akna paremal äärel on näha poolikult järgmise raamatu kaant. Akna vasakul äärel on valitud sortimise põhjal näha viimase raamatu kaant poolikult. Kui raamatu kaant pole lisatud, kuvatakse kohahoidja. Hõljudes hiirega raamatukaane peal, ilmub kaane alla raamatu nimi ning autor. Vaate mõlemas ääres on nooled, millele vajutades saab liikuda ühe raamatu võrra edasi või tagasi. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
    • List view: akna keskele tekib tabel raamatutest valitud sortimise järgi. Kuvatakse raamatu nimi, autor ning valitud sortimise tulp. Kui kirjeid on rohkem kui rakenduse aken mahutab, tekib paremasse äärde kerimisriba. Kui kirjeid on rohkem, kui teatud fikseeritud arv (nt 20) siis kuvatakse lehekülgede kaupa. Raamatu nimele vajutades avaneb vaade täiendava infoga raamatu kohta.
  • Add Book: avab vaate raamatu lisamiseks. Lisamisaknas on kõik raamatuga seonduvad väljad (autor, pealkiri, ISBM jms) ning nupud “Add book”, mis lisab raamatu kasutaja riiulile, ning “Cancel” lisamise tühistamiseks. ISBM või pealkirja välja täitmisel küsib rakendust avalikest veebiteenustest (Google Books API, Open Library Covers API jms) raamatu andmed ning pakub kasutajatele võimalust väljad eeltäita.
  • My Profile: saab uuendada enda profiiliga seonduvaid andmeid
  • Log out : logib kasutaja rakendusest välja, aga jätab rakenduse tööle
  • Exit: sulgeb rakenduse (küsib hüpikaknas kinnitust)

“Search”

Pakub võimalust otsida ja vaadata rakenduse andmebaasis või avalikes API-des olevaid raamatuid, otsides nt autori nime või pealkirja järgi

Mock-up ekraanitõmmised

Myshelf menüü struktuur sisselogituna

Myshelf menüü struktuur väljalogituna

My Books List vaade

My Books Slideshow vaade

Andmebaasi graaf

Rollijaotus

Rollijaotus on esialgne ning võib veel muutuda.

  • Jaan Elken - API-dega suhtlus, teenuste kiht
  • Martin Orgusaar - graafiline liides
  • Henri Põld - entity framework, äriloogika
  • Morris Mänd - andmebaasiga seonduv
  • Riho Uusjärv - teenuste kiht