CSC/ECE 517 Fall 2018/E1872 Track Time Students Look At Other Submissions
Introduction
The expertiza project takes advantage of peer-review among students to allow them to learn from each other. To track the review time that each student spend on each submitted resources is meaningful for instructors to study and improve the teaching experience. The previous team working on the project has solved part of such problems by tracking the active time of windows opened from the submitted links by till the window is closed or gives a periodic pop up to ask if the user is still reviewing. And thus records the end time. It is done using mature third-party APIs to record link review time.
In this project, we require to conglomerate the details of each review given by a student on the existing Review Report page. This will ease the task for the instructor to get the insights of a review on one single page in order to grade the student based on his/her review.
To accomplish this goal, here are the general solutions designed and implemented in this project:
- Designed and implemented toggle view component using Javascript and Ruby to open students’ reviews inside the review report table
- Used DOM to calculate and display the total time spent on the review per round.
- Modify Review report (views/review_mapping/_review_report.html.erb) to show the total and detailed time spent on each review submissions.
Flowchart
Objective of project
Objective 1:
The details of time spent on every assignment is displayed separately on the reviewer report page. As this is inconvenient we have to display all the statistics on the review report page.
Proposed Solution:
- We have added a link below the student ID in the first column of the review report page for each assignment.
- This is a toggle-able link and is available to each student details uniquely as shows below:
- Clicking on the link will toggle between showing/hiding a new column containing the review details to the table.
- The table contains the details regarding the team reviewed, round number of the review, total time spent on reviewing and time spent reviewing each link in the submission.
Files needed to be changed:
review_mapping/_review_report.html.erb
Design
Files Changed:
review_mapping/_review_report.html.erb - This is the file for the review report. We have added the functionality of a toggle link below each student id in the first column. Clicking on this link will display the details of the reviews done by this student. On clicking again the details will disappear, giving the user the flexibility of viewing these details if need be. The design makes use of the following models:
- Participant
- ResponseMap
- ResponseTime
- Assignment
- Team
First we fetch all the reviews done by the student by providing the user_id of the student to Participant which gives us the set of reviews done by that user. Then we iterate through these reviews. As reviews are based on the number of review rounds in the Assignment, we fetch the total number of review rounds for the current assignment from the Assignment model by fetching the current Assignment object using assignment id and then accessing the 'round_of_reviews' property of the object. The details of each review like the reviewer_id, reviewee_id , reviewed_object_id is stored in the ResponseMap model. We fetch the ResponseMap set for each such review from the ResponseMap by giving it reviewer_id and reviewed_object_id as the assignment id. Now we iterate through this set of ResponseMaps. The data for the link reviewed and the time taken for each link is in ResponseTime model which is linked to the ResponseMap through map_id. We make use of this and for each ResponseMap we put in a loop to get all possible ResponseTime for every link reviewed by the student. Finally we display this whole thing in the form of a table with the headers:
- Team Reviewed : This is the team reviewed by the student. We get the team name by passing reviewee_id found in each ResponseMap to the Team model.
- Total Time(mins) : This is the total time spent by the student in reviewing this team. We have written custom Javascript functions to calculate total time by adding time spent on individual links.
- Round : This is the review round number for which this review has been performed.
- Links : This will give you a list of links one after the other which the student has reviewed. These links are found as entries in the ResponseTime model with other information as well.
- Time spent per link (mins) : This is the time spent in reviewing each link. Again we have written functions in embedded Ruby to calculate time in mins using the start and end times of reviewing this link.
Algorithm:
1.Fetch all reviews of student from Participant by providing user_id of student 2.For a review in the reviews list do a. Fetch all response maps associations by providing reviewer_id as review.id and reviewed_object_id as the Assignment.id b.Fetch the number of review rounds needed by the assignment from Assignment model c.For each response map in the response map list do i. For each round from 1 to number of rounds do 1. Initialize map_total_time=0 2. Fetch the response time set from ResponseTime model by providing map_id as map.id and round number 3. Initialize a count variable which will keep count of links. count = 0. 4. For each link entry in the response time set do a. If current link is the first link being considered do i. Print team being reviewed name using Team model and id as reviewee_id ii. Keep an empty space with id as map.id+””+roundNumber for uniqueness iii. Print the round b. Else i. Print an empty space ii. Print an empty space iii. Print an empty space c. Get the time spent on the link by subtracting start time and end time. Convert the time to mins by dividing by 60. d. Add it to map_total_time which keeps tab of sum of time spent on all links e. Print link time 5. Increment count 6. Set the value of map_total_time in the block with id=map.id+roundNumber using innerHtml in 4-a-ii
Test Plan
UI and Manual Testing:
Steps: Login as Instructor -
username: instructor6 password: password
1. Create an assignment and make sure it currently has its 'Review' phase going on.
2. Add participants to the assignment and remember their names or ids.
3. Logout
Login as Student who is added to the assignment -
username: studentXXXX password: password
1. Go to the newly added assignment in your pending tasks(the pending task should be that of reviewing).
2. Ask for a team to review.
3. Go to each link submitted by this team and review it. If needed, note down the time spent on each link.
4. Logout.
Login as Instructor -
username: instructor6 password: password
1. Navigate to the 'Review Report' page of the assignment.
2. Search for the above student in the table.
3. Click on the link named 'Review time spent on task' below the student name.
Expected - A new column should be added to the table with the information regarding the reviewed team and the time spent per link and in total.