Difference between revisions of "VJFS"
Line 8: | Line 8: | ||
= <span style="font-size:large">Summary of requirement</span> = | = <span style="font-size:large">Summary of requirement</span> = | ||
− | <span style="font-size:small"> | + | <font size="2">VJFS_Admin:</font> |
+ | |||
+ | *<font size="2"></font>Create courses, quizes and questions. | ||
+ | *Add attendants and mentors to course. | ||
+ | *Support both multiple choice and text questions. | ||
+ | |||
+ | <font size="2">VJFS_User:</font> | ||
+ | |||
+ | *Take a quiz for course enrolled in.<font size="2"></font> | ||
+ | *See finished courses and quizes. | ||
+ | *See pending quizes. | ||
+ | |||
+ | <font size="2">VJFS_Mentor:</font> | ||
+ | |||
+ | *<font size="2">Correct answered quizes.</font> | ||
+ | *<font size="2"></font><span style="font-size: small;">Give feedback in form of approved/not approved.</span> | ||
+ | |||
+ | <span style="font-size: small;"></span> | ||
== <span style="font-size:medium">Architecture</span> == | == <span style="font-size:medium">Architecture</span> == |
Revision as of 17:20, 25 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 Screen Flow and Design Skeleton
- 7 Documented learning during project
- 8 Suggested Improvements to Further Work
- 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
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.
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
- 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 modell.
- BloodHound & Summernote.
- Project Presentation
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_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.
Screen Flow and Design Skeleton
Flow of the creation of new courses, quizes and questions.
Flow of the course and quiz taking application.
The mockup 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 mockups can be found https://github.com/joakikr/inf5750/tree/master/Modelimages/MockPages
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
Documented learning during project
Suggested Improvements to Further Work
NYI