Difference between revisions of "VJFS"
m |
|||
Line 100: | Line 100: | ||
] | ] | ||
} | } | ||
− | </source> | + | </source><br/> |
*''VJFS_quizes ''can be found from the URL ''/api/systemSettings/VJFS_quizes'' and its JSON object will have the following notation.<br/>Each quiz is an element in the array ''quizes'' and has the following properties:<br/><br/>''quizID: ''An unique ID that represents the quiz. (required)<br/>''courseID: ''The ID of the course this quiz belongs to. (required)<br/>''quizTitle: ''The title for the quiz. (required)<br/>''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)<br/><br/>An example JSON object: | *''VJFS_quizes ''can be found from the URL ''/api/systemSettings/VJFS_quizes'' and its JSON object will have the following notation.<br/>Each quiz is an element in the array ''quizes'' and has the following properties:<br/><br/>''quizID: ''An unique ID that represents the quiz. (required)<br/>''courseID: ''The ID of the course this quiz belongs to. (required)<br/>''quizTitle: ''The title for the quiz. (required)<br/>''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)<br/><br/>An example JSON object: | ||
Line 119: | Line 119: | ||
} | } | ||
] | ] | ||
− | </source> | + | </source><br/> |
*''VJFS_questions ''can be found from the URL ''/api/systemSettings/VJFS_questions ''and its JSON object will have the following notation.<br/>Each ''question ''is an element in the array ''questions'' and has the following properties:<br/><br/>''questionID:'' An unique ID that represents the question. (required)<br/>''quizID'': The ID of the quiz ths question belongs to. (required)<br/>''questionType:'' The type of the question - it's either "text" for text question or "multiple" for a multiplechoice question. (required)<br/>''questionQuestion:'' The question for the question. (required)<br/>''questionAnswer: ''The answer to the question. (required for "text" questions)<br/>''questionAlternatives: ''The alternatives with a boolean of whether that alternative is correct or not. (required for "multiple" questions)<br/><br/>An example JSON object: | *''VJFS_questions ''can be found from the URL ''/api/systemSettings/VJFS_questions ''and its JSON object will have the following notation.<br/>Each ''question ''is an element in the array ''questions'' and has the following properties:<br/><br/>''questionID:'' An unique ID that represents the question. (required)<br/>''quizID'': The ID of the quiz ths question belongs to. (required)<br/>''questionType:'' The type of the question - it's either "text" for text question or "multiple" for a multiplechoice question. (required)<br/>''questionQuestion:'' The question for the question. (required)<br/>''questionAnswer: ''The answer to the question. (required for "text" questions)<br/>''questionAlternatives: ''The alternatives with a boolean of whether that alternative is correct or not. (required for "multiple" questions)<br/><br/>An example JSON object: | ||
Line 153: | Line 153: | ||
] | ] | ||
} | } | ||
− | </source> | + | </source><br/> |
<div><br/></div><div>'''VJFS_User:'''<br/></div><div><br/></div><div>For users of the the quiz app there will be created four new field on the ''systemSettings ''resource per user.</div><div>These fields will have the following pattern URL: ''/api/systemSettings/VJFS_<username>_<courses | quizes | awaitingQuestions | doneQuestions>''.</div><div><br/></div> | <div><br/></div><div>'''VJFS_User:'''<br/></div><div><br/></div><div>For users of the the quiz app there will be created four new field on the ''systemSettings ''resource per user.</div><div>These fields will have the following pattern URL: ''/api/systemSettings/VJFS_<username>_<courses | quizes | awaitingQuestions | doneQuestions>''.</div><div><br/></div> | ||
− | *''VJFS_username_courses ''can be found from the URL ''/api/systemSettings/VJFS_username_courses ''and will have the following notation:<br/>Each ''course'' is an element in the array ''courses ''and will only have one property:<br/><br/>''courseID:'' The ID of a course this user has passed. (required) | + | *''VJFS_username_courses ''can be found from the URL ''/api/systemSettings/VJFS_username_courses ''and will have the following notation:<br/>Each ''course'' is an element in the array ''courses ''and will only have one property:<br/><br/>''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:<br/>Each ''quiz'' is an element in the array ''quizes ''and will only have one property:<br/><br/>''quizID:'' The ID of a quiz this users has passed. (required) | + | *''VJFS_username_quizes'' can be found from the URL ''/api/systemSettings/VJFS_username_quizes'' and will have the following notation:<br/>Each ''quiz'' is an element in the array ''quizes ''and will only have one property:<br/><br/>''quizID:'' The ID of a quiz this users has passed. (required) |
*''VJFS_username_doneQuestions ''can be found from the URL ''/api/systemSettings/VJFS_username_doneQuestions ''and will have the following notation:<br/>Each ''question'' is an element in the array ''questions'' and will have the following properties:<br/><br/>''questionID: ''The ID of the question this answer belongs to. (required)<br/>''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)<br/>''questionAlternatives:'' The alternatives with a boolean of the users answer on that alternative. (required for "multiple" questions)<br/> | *''VJFS_username_doneQuestions ''can be found from the URL ''/api/systemSettings/VJFS_username_doneQuestions ''and will have the following notation:<br/>Each ''question'' is an element in the array ''questions'' and will have the following properties:<br/><br/>''questionID: ''The ID of the question this answer belongs to. (required)<br/>''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)<br/>''questionAlternatives:'' The alternatives with a boolean of the users answer on that alternative. (required for "multiple" questions)<br/> | ||
*''VJFS_username_awatingQuestions ''can be found from the URL ''/api/systemSettings/VJFS_username_awatingQuestions ''and will have same notation as ''doneQuestions''.<br/> | *''VJFS_username_awatingQuestions ''can be found from the URL ''/api/systemSettings/VJFS_username_awatingQuestions ''and will have same notation as ''doneQuestions''.<br/> | ||
− | <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 ''/api/systemSettings/VJFS_<username>_ | + | <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: ''/api/systemSettings/VJFS_<username>_<courses | quizes | awaitingQuestions | doneQuestions>''.</div> |
= <span style="font-size:large">Screenshots and screen flows</span> = | = <span style="font-size:large">Screenshots and screen flows</span> = |
Revision as of 17:00, 22 November 2014
Contents
- 1 List of Group Members:
- 2 Summary of requirement
- 3 Time schedule
- 4 How you are dividing tasks within the group
- 5 How Information Is Stored
- 6 Screenshots and screen flows
- 7 Documented learning during project
- 8 Suggested improvements to APIs etc
- 9 Link to repository
- 10 Download link to sample web app or Android app
List of Group Members:
- Joakim Kristiansen
- Vivek Kaul
- Sigurhjörtur Snorrason
- Farrukh Wahab Manzoor
Summary of requirement
NYI - Implemted on monday 3/11
Architecture
List of technologies and frameworks we will use:
- JavaScript
- jQuery
- AJAX
- REST
- JSON
- CSS
- HTML5
- Bootstrap
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.
Final delivery: 8th December
Create at least 2 fully dynamic applications for quiz taking.
Adapt so it works with DHIS.
Create mobile support
Presentation: 9th December
Finalize wiki.
Create a work history on steps achieved.
How you are dividing tasks within the group
NYI
How Information Is Stored
For the 3 apps the data 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_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_doneQuestions can be found from the URL /api/systemSettings/VJFS_username_doneQuestions 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) - VJFS_username_awatingQuestions can be found from the URL /api/systemSettings/VJFS_username_awatingQuestions and will have same notation as doneQuestions.
Screenshots and screen flows
Flow of the creation of new courses, quizes and questions.
Flow of the course and quiz taking application.
The look of 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.
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 course creater
Our start page aims to have a selection of previously made courses and the option to add more courses.
Clicking an existing course will bring you to the display for that course. It will contain the course you clicked, all the quizes it has and the description. From there you can select to make a new quiz or go into a current one.
If you select a quiz you'll get the question overview. From here you can select questions or create a new one.
Each of of the pages has the option to add a new question. So we will also create pages for each option. Creating a new course, a new quiz and then 1 for a free text question and one for multiple choice ones.
|
|
|
|
|
|
|
|
Models
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