Difference between revisions of "VJFS"

From mn/ifi/inf5750
Jump to: navigation, search
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= <span style="font-size:large">List of Group Members:</span> =
+
= '''<span style="font-size:large">Group Members</span>''' =
  
 
*Joakim Kristiansen
 
*Joakim Kristiansen
Line 6: Line 6:
 
*Farrukh Wahab Manzoor
 
*Farrukh Wahab Manzoor
  
= <span style="font-size:large">Summary of requirement</span> =
+
= '''<span style="font-size:large">Summary of requirement</span>''' =
  
 
<font size="2">VJFS_Admin:</font>
 
<font size="2">VJFS_Admin:</font>
Line 23: Line 23:
  
 
*<font size="2">Correct answered quizes.</font>
 
*<font size="2">Correct answered quizes.</font>
*<span style="font-size: small;">Give feedback in form of approved/not approved.</span>
+
*<span style="font-size: small">Give feedback in form of approved/not approved.</span>
  
  
  
== <span style="font-size:medium">Architecture</span> ==
+
= '''<span style="font-size:medium">Architecture</span>''' =
  
 
List of technologies and frameworks we will use:
 
List of technologies and frameworks we will use:
Line 36: Line 36:
 
*<span style="font-size:small">Bootstrap (summernote, typeahead)</span>
 
*<span style="font-size:small">Bootstrap (summernote, typeahead)</span>
  
= <span style="font-size:large">Time schedule</span> =
+
 
 +
 
 +
= '''<span style="font-size:large">Time schedule</span>''' =
  
 
== <span style="font-size:medium">Milestone 1: 1st November</span> ==
 
== <span style="font-size:medium">Milestone 1: 1st November</span> ==
Line 59: Line 61:
  
 
Finished, if applicable also with mobile app.
 
Finished, if applicable also with mobile app.
 +
 +
== <span style="font-size: medium;">Presentation: 3th December</span> ==
 +
 +
Finalize wiki.
 +
 +
Create a work history on steps achieved.
  
 
== <span style="font-size:medium">Final delivery: 8th December</span> ==
 
== <span style="font-size:medium">Final delivery: 8th December</span> ==
Line 68: Line 76:
 
Create mobile support
 
Create mobile support
  
== <span style="font-size:medium">Presentation: 9th December</span> ==
+
== ==
 
 
Finalize wiki.
 
 
 
Create a work history on steps achieved.
 
  
= <span style="font-size:large">How you are dividing tasks within the group</span> =
+
= <font size="4">Tasks Divided</font> =
  
*'''All:'''<br/><br/>- Brainstorming.<br/>- Designing and Prototyping of Apps.
+
*'''All:'''<br/>- Brainstorming.<br/>- Designing and Prototyping of Apps.
*'''Joakim Kristiansen:'''<br/><br/>- Wiki.<br/>- Implemented VJFS_Admin App.<br/>- Designed JSON format.&nbsp;
+
*'''Joakim Kristiansen:'''<br/>- Wiki.<br/>- Implemented VJFS_Admin App.<br/>- Designed JSON format.&nbsp;
*'''Vivek Kaul:'''<br/><br/>- Mockups and ORM modell.<br/>- Implemented VJFS_User App.
+
*'''Vivek Kaul:'''<br/>- Mockups and ORM modell.<br/>- Implemented VJFS_User App.
*'''Sigurhjörtur Snorrason:'''<br/><br/>- Wiki.<br/>- Flowcharts.<br/>- Implemented VJFS_Mentor App
+
*'''Sigurhjörtur Snorrason:'''<br/>- Wiki.<br/>- Flowcharts.<br/>- Implemented VJFS_Mentor App
*'''Farrukh Wahab Manzoor:'''<br/><br/>- Mockups and ORM modell.<br/>- BloodHound & Summernote.<br/>- Project Presentation
+
*'''Farrukh Wahab Manzoor:'''<br/>- Mockups and ORM model.<br/>- Implemented VJFS_Stat App.<br/>- Project Presentation.
  
= <font size="4">Screen Flow and Design Skeleton</font> =
+
= '''<font size="4">Screen Flow and Design Skeleton</font>''' =
  
 
Flow of the creation of new courses, quizes and questions.
 
Flow of the creation of new courses, quizes and questions.
Line 92: Line 96:
 
http://folk.uio.no/sigurhjs/UewKaz0.png
 
http://folk.uio.no/sigurhjs/UewKaz0.png
  
== The mockup of the GUI ==
+
Flow of the course correcting and mentoring app.
 +
 
 +
http://folk.uio.no/sigurhjs/mentor.jpg
 +
 
 +
= <span style="font-size:large">'''GUI Mockup'''</span> =
  
 
By creating basic design of what we want our GUI to ressemble we have created a clear outline for us to work on. This means we can focus more on the functionality of the program and not spend to much time getting ideas for the acutal look of the program. We also aimed for a simplistic look to our GUI. One of the reasons being that this should be useable by anyone, even if it is the first minute of working with DHIS. By keeping the amount of buttons and things you can do as low as possible while keeping the fundamental requirements of the program we hope it will be as easy as possible to learn.&nbsp;<br/><br/>As these are mockups of the actual GUI we have omitted as much graphical design as we, and just keep to the fundamental parts we require from the GUI.
 
By creating basic design of what we want our GUI to ressemble we have created a clear outline for us to work on. This means we can focus more on the functionality of the program and not spend to much time getting ideas for the acutal look of the program. We also aimed for a simplistic look to our GUI. One of the reasons being that this should be useable by anyone, even if it is the first minute of working with DHIS. By keeping the amount of buttons and things you can do as low as possible while keeping the fundamental requirements of the program we hope it will be as easy as possible to learn.&nbsp;<br/><br/>As these are mockups of the actual GUI we have omitted as much graphical design as we, and just keep to the fundamental parts we require from the GUI.
Line 100: Line 108:
  
  
= <span style="font-size: large;">How Information Is Stored</span> =
+
= '''<span style="font-size: large">How Information Is Stored</span>''' =
  
 
For the three apps the information about courses, quizes, questions and users answers is stored as JSON objects within DHIS own resource,&nbsp;''&nbsp;/api/systemSettings''.
 
For the three apps the information about courses, quizes, questions and users answers is stored as JSON objects within DHIS own resource,&nbsp;''&nbsp;/api/systemSettings''.
Line 198: Line 206:
  
 
<div>'''VJFS_Mentor''':<br/></div><div><br/></div><div>The mentor app will not itself store new data, but rather modify existing data saved in URL:&nbsp;''/api/systemSettings/VJFS_&lt;username&gt;_&lt;courses | quizes | questions&gt;''.</div>
 
<div>'''VJFS_Mentor''':<br/></div><div><br/></div><div>The mentor app will not itself store new data, but rather modify existing data saved in URL:&nbsp;''/api/systemSettings/VJFS_&lt;username&gt;_&lt;courses | quizes | questions&gt;''.</div>
 
+
= <span style="font-size:large">'''Models (Not valid)'''</span> =
 
 
== Models (Not valid) ==
 
  
 
To create a clear and structured setup for working on the task we have created a UML for our Java and a ORM for our databases. By doing this we have a clear idea on what we want from both the Java code and Hibernate. This will make dividing the tasks between us easier.
 
To create a clear and structured setup for working on the task we have created a UML for our Java and a ORM for our databases. By doing this we have a clear idea on what we want from both the Java code and Hibernate. This will make dividing the tasks between us easier.
Line 208: Line 214:
 
UML: [http://folk.uio.no/sigurhjs/INF5750UML.pdf http://folk.uio.no/sigurhjs/INF5750UML.pdf]
 
UML: [http://folk.uio.no/sigurhjs/INF5750UML.pdf http://folk.uio.no/sigurhjs/INF5750UML.pdf]
  
= <span style="font-size:large">Suggested Improvements to Further Work</span> =
 
  
*Create statistics for courses.
+
 
*Create mobile phone support.
+
= '''<span style="font-size:large">Suggested Improvements to Further Work</span>''' =
 +
 
 
*Improve GUI.
 
*Improve GUI.
 
*Improve stability.
 
*Improve stability.
 
*Switch out JSON for own database for better performance and security.
 
*Switch out JSON for own database for better performance and security.
  
= <span style="font-size:large">Link to repository</span> =
+
= <span style="font-size:large">'''Links'''</span> =
 +
 
 +
<span style="font-size:medium"><span style="font-family:times new roman,times,serif">The following sections contains the necessary links.</span></span>
 +
 
 +
== '''<span style="font-size:large">Link to repository</span>''' ==
  
 
*[https://github.com/joakikr/inf5750 https://github.com/joakikr/inf5750]
 
*[https://github.com/joakikr/inf5750 https://github.com/joakikr/inf5750]
  
= <span style="font-size:large">Link to downloadable .zip files</span> =
+
 
 +
 
 +
== '''<span style="font-size:large">Link to downloadable .zip file</span>''' ==
 +
 
 +
[https://github.com/joakikr/inf5750/blob/master/VJFS_QuizCompanion.zip https://github.com/joakikr/inf5750/blob/master/VJFS_QuizCompanion.zip]

Latest revision as of 14:11, 9 December 2014

Group Members

  • Joakim Kristiansen
  • Vivek Kaul
  • Sigurhjörtur Snorrason
  • Farrukh Wahab Manzoor

Summary of requirement

VJFS_Admin:

  • Create courses, quizes and questions.
  • Add attendants and mentors to course.
  • Support both multiple choice and text questions.

VJFS_User:

  • Take a quiz for course enrolled in.
  • See finished courses and quizes.
  • See pending quizes.

VJFS_Mentor:

  • Correct answered quizes.
  • Give feedback in form of approved/not approved.


Architecture

List of technologies and frameworks we will use:

  • JavaScript (jQuery, AJAX, JSON)
  • CSS
  • HTML5
  • Bootstrap (summernote, typeahead)


Time schedule

Milestone 1: 1st November

Document features and architecture on Wiki

Show understanding of DHIS2 web apps

Document flowchart, UML and ORM models and GUI outlines.

Create work schedule and step-by-step goals of the probject.

Milestone 2: 15th November

First bare-bone version - static HTML

Uploadable as DHIS2 web app

Create a sample GUI with mock classes

Milestone 3: 30th November

Finished, if applicable also with mobile app.

Presentation: 3th December

Finalize wiki.

Create a work history on steps achieved.

Final delivery: 8th December

Create at least 2 fully dynamic applications for quiz taking.

Adapt so it works with DHIS.

Create mobile support

Tasks Divided

  • All:
    - Brainstorming.
    - Designing and Prototyping of Apps.
  • Joakim Kristiansen:
    - Wiki.
    - Implemented VJFS_Admin App.
    - Designed JSON format. 
  • Vivek Kaul:
    - Mockups and ORM modell.
    - Implemented VJFS_User App.
  • Sigurhjörtur Snorrason:
    - Wiki.
    - Flowcharts.
    - Implemented VJFS_Mentor App
  • Farrukh Wahab Manzoor:
    - Mockups and ORM model.
    - Implemented VJFS_Stat App.
    - Project Presentation.

Screen Flow and Design Skeleton

Flow of the creation of new courses, quizes and questions.

pD1epn8.png

Flow of the course and quiz taking application.

UewKaz0.png

Flow of the course correcting and mentoring app.

mentor.jpg

GUI Mockup

By creating basic design of what we want our GUI to ressemble we have created a clear outline for us to work on. This means we can focus more on the functionality of the program and not spend to much time getting ideas for the acutal look of the program. We also aimed for a simplistic look to our GUI. One of the reasons being that this should be useable by anyone, even if it is the first minute of working with DHIS. By keeping the amount of buttons and things you can do as low as possible while keeping the fundamental requirements of the program we hope it will be as easy as possible to learn. 

As these are mockups of the actual GUI we have omitted as much graphical design as we, and just keep to the fundamental parts we require from the GUI.

The mockups can be found https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages


How Information Is Stored

For the three apps the information about courses, quizes, questions and users answers is stored as JSON objects within DHIS own resource,  /api/systemSettings.

VJFS_Admin:

There are three systemSettings this app will create/modify - VJFS_courses, VJFS_quizes and VJFS_questions.

  • VJFS_courses can be found from the URL /api/systemSettings/VJFS_courses and its JSON object will have the following notation.
    Each course is an element in the array courses and has the following properties:

    courseID : An unique ID that represents the course. (required)
    courseTitle: The title for the course. (required)
    courseDescription: The description of the course.
    courseAttendants: The attendants for the course, this is a subset of the users of DHIS system.
    courseMentors: The mentors for the course, this is a subset of the users of DHIS system

    An example JSON object:
{
courses: [
 {
 courseID: 1416663811386,
 courseTitle: "Course 1",
 courseDescription: ""<p>This is course 1.</p>"",
 courseAttendants: [
 {
 attendantUsername: "toure",
 attendantName: "Yaya Toure",
 attendantID: "yI9qQfuM7Xd"
 }
 ],
 courseMentors: [ ]
 },
 {
 courseID: 1416663826881,
 courseTitle: "Course 2",
 courseDescription: ""<p>This is course 2.</p>"",
 courseAttendants: [ ],
 courseMentors: [ ]
 }
]
}
  • VJFS_quizes can be found from the URL /api/systemSettings/VJFS_quizes and its JSON object will have the following notation.
    Each quiz is an element in the array quizes and has the following properties:

    quizID: An unique ID that represents the quiz. (required)
    courseID: The ID of the course this quiz belongs to. (required)
    quizTitle: The title for the quiz. (required)
    quizLevel: The level of this quiz. If a quiz in a course has level x, then all quizes in that course with level lower than x must be taken first. (required)

    An example JSON object:
{
 quizes:[{
 quizID: 1416665405980,
 courseID: "1416663811386",
 quizTitle: "Quiz 1",
 quizLevel: "1"
 },{
 quizID: 1416665421301,
 courseID: "1416663811386",
 quizTitle: "Quiz 2",
 quizLevel: "2"
 } 
 ]
}
  • VJFS_questions can be found from the URL /api/systemSettings/VJFS_questions and its JSON object will have the following notation.
    Each question is an element in the array questions and has the following properties:

    questionID: An unique ID that represents the question. (required)
    quizID: The ID of the quiz ths question belongs to. (required)
    questionType: The type of the question - it's either "text" for text question or "multiple" for a multiplechoice question. (required)
    questionQuestion: The question for the question. (required)
    questionAnswer: The answer to the question. (required for "text" questions)
    questionAlternatives: The alternatives with a boolean of whether that alternative is correct or not. (required for "multiple" questions)

    An example JSON object:
{
 questions: [
 {
 questionID: 1416665924422,
 quizID: "1416665405980",
 questionTitle: "Question 1",
 questionType: "text",
 questionQuestion: "Q",
 questionAnswer: "A"
 },
 {
 questionID: 1416665944701,
 quizID: "1416665405980",
 questionTitle: "Question 2",
 questionType: "multiple",
 questionQuestion: "Q",
 questionAlternatives: [
 {
 alternativeChecked: true,
 alternativeValue: "A1"
 },
 {
 alternativeChecked: false,
 alternativeValue: "A2"
 }
 ]
 }
 ]
}

VJFS_User:

For users of the the quiz app there will be created four new field on the systemSettings resource per user.
These fields will have the following pattern URL: /api/systemSettings/VJFS_<username>_<courses | quizes | questions>.

  • VJFS_username_courses can be found from the URL /api/systemSettings/VJFS_username_courses and will have the following notation:
    Each course is an element in the array courses and will only have one property:

    courseID: The ID of a course this user has passed. (required)
  • VJFS_username_quizes can be found from the URL /api/systemSettings/VJFS_username_quizes and will have the following notation:
    Each quiz is an element in the array quizes and will only have one property:

    quizID: The ID of a quiz this users has passed. (required)
  • VJFS_username_questions can be found from the URL /api/systemSettings/VJFS_username_questions and will have the following notation:
    Each question is an element in the array questions and will have the following properties:

    questionID: The ID of the question this answer belongs to. (required)
    quizID: The ID of the quiz the question belonged to. (required)
    questionAnswer: The answer provided by the user for this question. (required for "text" questions)
    questionAlternatives: The alternatives with a boolean of the users answer on that alternative. (required for "multiple" questions)
    corrected: Holds the value of whether this answer has been corrected or not.


VJFS_Mentor:

The mentor app will not itself store new data, but rather modify existing data saved in URL: /api/systemSettings/VJFS_<username>_<courses | quizes | questions>.

Models (Not valid)

To create a clear and structured setup for working on the task we have created a UML for our Java and a ORM for our databases. By doing this we have a clear idea on what we want from both the Java code and Hibernate. This will make dividing the tasks between us easier.

ORM : http://folk.uio.no/sigurhjs/ORM.pdf

UML: http://folk.uio.no/sigurhjs/INF5750UML.pdf


Suggested Improvements to Further Work

  • Improve GUI.
  • Improve stability.
  • Switch out JSON for own database for better performance and security.

Links

The following sections contains the necessary links.

Link to repository


Link to downloadable .zip file

https://github.com/joakikr/inf5750/blob/master/VJFS_QuizCompanion.zip