<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hshah3</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Hshah3"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Hshah3"/>
	<updated>2026-09-30T19:38:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121578</id>
		<title>CSC/ECE 517 Fall 2018/E1855 let course staff as well as students do reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121578"/>
		<updated>2018-12-18T04:06:49Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Proposed Solutions and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
The way Expertiza is set up right now is that only peers can review your work. However, there are cases when the course staff (Instructor/ TAs) would want to submit reviews as well. This project aims to implement this feature by allowing course staff to review the project on the same metrics as other students who review the project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
&lt;br /&gt;
The current system does not allow instructors to submit reviews of student work. We will work upon the feature which will let them review using the same review form that students use to do reviews.&lt;br /&gt;
&lt;br /&gt;
=== Current scenario ===&lt;br /&gt;
&lt;br /&gt;
This is how some of the pages we are concerned with, currently look.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Submissions page for an assignment in Instructor View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Submissions_instr.jpeg | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A typical Scores table in a Student View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Grades_view_team_current.png | center]]&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solutions and Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
Following changes will be made to let staff perform reviews as well:&lt;br /&gt;
&lt;br /&gt;
'''Step 1: Add a way for the instructors to perform a review.'''&lt;br /&gt;
&lt;br /&gt;
We have implemented links to ''Begin review'', ''Edit review'','' View review'' and ''Submit review'' in the assignment submissions view. &lt;br /&gt;
When the instructor/TA reviews a work for the first time, he/she is added as a participant and a review response mapping is created. &lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''View: ''' ''app/views/assignments/list_submissions.html.erb'' - To add links in the instructor view&lt;br /&gt;
* '''Controller: ''' ''app/controllers/review_mapping_controller.rb''  - Method: add_instructor_as_reviewer&lt;br /&gt;
  &lt;br /&gt;
In the second case, we can see a 'Begin review' link. This is the initial state when instructor review has not been added to the submission.&lt;br /&gt;
Once the instructor adds a review and submits it, we can see the 'Update review' link. If the deadline has passed, Update Review will change to View Review. In case he just saves the review, an 'Edit review' link will appear.&lt;br /&gt;
If the review deadline of one round is passed, the 'Edit review' link becomes 'Update review' link. This follows in line with what the student sees while performing a review. Similarly, just like students instructor would not able to edit the review once submitted. Instructor can update it till the final submission deadline passes.&lt;br /&gt;
&lt;br /&gt;
[[File:Latest_screen_instructor.JPG]]&lt;br /&gt;
[[File:Ins_TA_Review.png]]&lt;br /&gt;
&lt;br /&gt;
'''Step 2: Add the instructor review in ''Your Scores'' table in case he has reviewed your work. Provide an icon to highlight the special nature of an instructors review.'''&lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''Assets: ''' ''app/assets/stylesheets/grades.scss'' - Icon to make an instructor's review distinct from other reviews&lt;br /&gt;
* '''View: ''' ''app/views/grades/view_team.html.erb'' - To modify the &amp;quot;Your scores&amp;quot; page to include an icon next to the peer review score indicating that the instructor's score is not included in the final peer review score.&lt;br /&gt;
* '''Models: ''' &lt;br /&gt;
** ''app/models/answer.rb'' - Method: compute_scores | Modification in logic to ensure instructor review scores are not counted in the overall score of the student.&lt;br /&gt;
** ''app/models/vm_question_response_score_cell.rb'' - Included a new variable called 'is_instructor_review' to identify an instructor review&lt;br /&gt;
** ''app/models/vm_question_response_row.rb'' - Change in average_score_for_row method to not include an instructor review score&lt;br /&gt;
** ''app/models/vm_question_response.rb'' - Modified the add_answer method to include the is_instructor_review to each row_score object&lt;br /&gt;
&lt;br /&gt;
A student should be able to make out if an instructor has reviewed his/his team's work. In case the instructor performs a review on the team's work, there will be an icon next to the instructor's review along with explicitly stating that it is an 'Instructor review'.&lt;br /&gt;
The average peer review score for the team has been modified to exclude the instructor's scores. Same has been taken into account for the average score calculated for each row.&lt;br /&gt;
&lt;br /&gt;
[[File:Score_hover.png]]&lt;br /&gt;
&lt;br /&gt;
Like shown in the above picture we can see a info button on which if we hover the text is shown.&lt;br /&gt;
&lt;br /&gt;
Possible icons :&lt;br /&gt;
 [[File:Instuctor.jpg]]  [[File:Instructor1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
'''Features testing:''' Many of our changes are reflected on views (user interface). Following is the list of tests that we will conduct with rspec/capybara.&lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs perform a review for the submission of latest finished round if instructor/TAs has not started a review for the submission yet&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs save a review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs review a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs edit a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should allow instructor/TAs perform a review after the deadline for reviewing has passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''More testing:''' &lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs update a review for the submission of latest finished round if instructor/TAs performed and saved a review for the previous round&amp;quot;&lt;br /&gt;
# it &amp;quot;should show &amp;quot;Instructor review&amp;quot; when a student views feedback on his/her submission if an instructor/TA has reviewed his/his team's work&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average peer review score for the team&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average score for each question in the review&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== '''Team''' ==&lt;br /&gt;
'''Members : '''&lt;br /&gt;
Harsh Shah, &lt;br /&gt;
Prachi Gupta, &lt;br /&gt;
Ramkumaar Kovil Kanthadai, &lt;br /&gt;
Raveena D'Costa.&lt;br /&gt;
&lt;br /&gt;
'''Mentor :''' Dr.Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&lt;br /&gt;
* https://expertiza.ncsu.edu/ &lt;br /&gt;
&lt;br /&gt;
Pull Request&lt;br /&gt;
* https://github.com/expertiza/expertiza/pull/1304&lt;br /&gt;
&lt;br /&gt;
Expertiza Github&lt;br /&gt;
* https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
Expertiza Documentation&lt;br /&gt;
* http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121577</id>
		<title>CSC/ECE 517 Fall 2018/E1855 let course staff as well as students do reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121577"/>
		<updated>2018-12-18T04:02:32Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Proposed Solutions and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
The way Expertiza is set up right now is that only peers can review your work. However, there are cases when the course staff (Instructor/ TAs) would want to submit reviews as well. This project aims to implement this feature by allowing course staff to review the project on the same metrics as other students who review the project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
&lt;br /&gt;
The current system does not allow instructors to submit reviews of student work. We will work upon the feature which will let them review using the same review form that students use to do reviews.&lt;br /&gt;
&lt;br /&gt;
=== Current scenario ===&lt;br /&gt;
&lt;br /&gt;
This is how some of the pages we are concerned with, currently look.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Submissions page for an assignment in Instructor View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Submissions_instr.jpeg | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A typical Scores table in a Student View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Grades_view_team_current.png | center]]&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solutions and Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
Following changes will be made to let staff perform reviews as well:&lt;br /&gt;
&lt;br /&gt;
'''Step 1: Add a way for the instructors to perform a review.'''&lt;br /&gt;
&lt;br /&gt;
We have implemented links to ''Begin review'', ''Edit review'','' View review'' and ''Submit review'' in the assignment submissions view. &lt;br /&gt;
When the instructor/TA reviews a work for the first time, he/she is added as a participant and a review response mapping is created. &lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''View: ''' ''app/views/assignments/list_submissions.html.erb'' - To add links in the instructor view&lt;br /&gt;
* '''Controller: ''' ''app/controllers/review_mapping_controller.rb''  - Method: add_instructor_as_reviewer&lt;br /&gt;
  &lt;br /&gt;
In the second case, we can see a 'Begin review' link. This is the initial state when instructor review has not been added to the submission.&lt;br /&gt;
Once the instructor adds a review and submits it, we can see the 'Update review' link. If the deadline has passed, Update Review will change to View Review. In case he just saves the review, an 'Edit review' link will appear.&lt;br /&gt;
If the review deadline of one round is passed, the 'Edit review' link becomes 'Update review' link. This follows in line with what the student sees while performing a review. Similarly, just like students instructor would not able to edit or update the review once submitted.&lt;br /&gt;
&lt;br /&gt;
[[File:Latest_screen_instructor.JPG]]&lt;br /&gt;
[[File:Ins_TA_Review.png]]&lt;br /&gt;
&lt;br /&gt;
'''Step 2: Add the instructor review in ''Your Scores'' table in case he has reviewed your work. Provide an icon to highlight the special nature of an instructors review.'''&lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''Assets: ''' ''app/assets/stylesheets/grades.scss'' - Icon to make an instructor's review distinct from other reviews&lt;br /&gt;
* '''View: ''' ''app/views/grades/view_team.html.erb'' - To modify the &amp;quot;Your scores&amp;quot; page to include an icon next to the peer review score indicating that the instructor's score is not included in the final peer review score.&lt;br /&gt;
* '''Models: ''' &lt;br /&gt;
** ''app/models/answer.rb'' - Method: compute_scores | Modification in logic to ensure instructor review scores are not counted in the overall score of the student.&lt;br /&gt;
** ''app/models/vm_question_response_score_cell.rb'' - Included a new variable called 'is_instructor_review' to identify an instructor review&lt;br /&gt;
** ''app/models/vm_question_response_row.rb'' - Change in average_score_for_row method to not include an instructor review score&lt;br /&gt;
** ''app/models/vm_question_response.rb'' - Modified the add_answer method to include the is_instructor_review to each row_score object&lt;br /&gt;
&lt;br /&gt;
A student should be able to make out if an instructor has reviewed his/his team's work. In case the instructor performs a review on the team's work, there will be an icon next to the instructor's review along with explicitly stating that it is an 'Instructor review'.&lt;br /&gt;
The average peer review score for the team has been modified to exclude the instructor's scores. Same has been taken into account for the average score calculated for each row.&lt;br /&gt;
&lt;br /&gt;
[[File:Score_hover.png]]&lt;br /&gt;
&lt;br /&gt;
Like shown in the above picture we can see a info button on which if we hover the text is shown.&lt;br /&gt;
&lt;br /&gt;
Possible icons :&lt;br /&gt;
 [[File:Instuctor.jpg]]  [[File:Instructor1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
'''Features testing:''' Many of our changes are reflected on views (user interface). Following is the list of tests that we will conduct with rspec/capybara.&lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs perform a review for the submission of latest finished round if instructor/TAs has not started a review for the submission yet&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs save a review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs review a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs edit a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should allow instructor/TAs perform a review after the deadline for reviewing has passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''More testing:''' &lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs update a review for the submission of latest finished round if instructor/TAs performed and saved a review for the previous round&amp;quot;&lt;br /&gt;
# it &amp;quot;should show &amp;quot;Instructor review&amp;quot; when a student views feedback on his/her submission if an instructor/TA has reviewed his/his team's work&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average peer review score for the team&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average score for each question in the review&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== '''Team''' ==&lt;br /&gt;
'''Members : '''&lt;br /&gt;
Harsh Shah, &lt;br /&gt;
Prachi Gupta, &lt;br /&gt;
Ramkumaar Kovil Kanthadai, &lt;br /&gt;
Raveena D'Costa.&lt;br /&gt;
&lt;br /&gt;
'''Mentor :''' Dr.Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&lt;br /&gt;
* https://expertiza.ncsu.edu/ &lt;br /&gt;
&lt;br /&gt;
Pull Request&lt;br /&gt;
* https://github.com/expertiza/expertiza/pull/1304&lt;br /&gt;
&lt;br /&gt;
Expertiza Github&lt;br /&gt;
* https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
Expertiza Documentation&lt;br /&gt;
* http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121576</id>
		<title>CSC/ECE 517 Fall 2018/E1855 let course staff as well as students do reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121576"/>
		<updated>2018-12-18T03:57:27Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Proposed Solutions and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
The way Expertiza is set up right now is that only peers can review your work. However, there are cases when the course staff (Instructor/ TAs) would want to submit reviews as well. This project aims to implement this feature by allowing course staff to review the project on the same metrics as other students who review the project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
&lt;br /&gt;
The current system does not allow instructors to submit reviews of student work. We will work upon the feature which will let them review using the same review form that students use to do reviews.&lt;br /&gt;
&lt;br /&gt;
=== Current scenario ===&lt;br /&gt;
&lt;br /&gt;
This is how some of the pages we are concerned with, currently look.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Submissions page for an assignment in Instructor View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Submissions_instr.jpeg | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A typical Scores table in a Student View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Grades_view_team_current.png | center]]&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solutions and Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
Following changes will be made to let staff perform reviews as well:&lt;br /&gt;
&lt;br /&gt;
'''Step 1: Add a way for the instructors to perform a review.'''&lt;br /&gt;
&lt;br /&gt;
We have implemented links to ''Begin review'', ''Edit review'','' View review'' and ''Submit review'' in the assignment submissions view. &lt;br /&gt;
When the instructor/TA reviews a work for the first time, he/she is added as a participant and a review response mapping is created. &lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''View: ''' ''app/views/assignments/list_submissions.html.erb'' - To add links in the instructor view&lt;br /&gt;
* '''Controller: ''' ''app/controllers/review_mapping_controller.rb''  - Method: add_instructor_as_reviewer&lt;br /&gt;
  &lt;br /&gt;
In the second case, we can see a 'Begin review' link. This is the initial state when instructor review has not been added to the submission.&lt;br /&gt;
Once the instructor adds a review and submits it, we can see the 'Update review' link. If the deadline has passed, Update Review will change to View Review. In case he just saves the review, an 'Edit review' link will appear.&lt;br /&gt;
If the review deadline of one round is passed, the 'Edit review' link becomes 'Update review' link. This follows in line with what the student sees while performing a review. Similarly, just like students instructor would not able to edit or update the review once submitted.&lt;br /&gt;
&lt;br /&gt;
[[File:latest_screen_instructor.jpg]]&lt;br /&gt;
[[File:Ins_TA_Review.png]]&lt;br /&gt;
&lt;br /&gt;
'''Step 2: Add the instructor review in ''Your Scores'' table in case he has reviewed your work. Provide an icon to highlight the special nature of an instructors review.'''&lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''Assets: ''' ''app/assets/stylesheets/grades.scss'' - Icon to make an instructor's review distinct from other reviews&lt;br /&gt;
* '''View: ''' ''app/views/grades/view_team.html.erb'' - To modify the &amp;quot;Your scores&amp;quot; page to include an icon next to the peer review score indicating that the instructor's score is not included in the final peer review score.&lt;br /&gt;
* '''Models: ''' &lt;br /&gt;
** ''app/models/answer.rb'' - Method: compute_scores | Modification in logic to ensure instructor review scores are not counted in the overall score of the student.&lt;br /&gt;
** ''app/models/vm_question_response_score_cell.rb'' - Included a new variable called 'is_instructor_review' to identify an instructor review&lt;br /&gt;
** ''app/models/vm_question_response_row.rb'' - Change in average_score_for_row method to not include an instructor review score&lt;br /&gt;
** ''app/models/vm_question_response.rb'' - Modified the add_answer method to include the is_instructor_review to each row_score object&lt;br /&gt;
&lt;br /&gt;
A student should be able to make out if an instructor has reviewed his/his team's work. In case the instructor performs a review on the team's work, there will be an icon next to the instructor's review along with explicitly stating that it is an 'Instructor review'.&lt;br /&gt;
The average peer review score for the team has been modified to exclude the instructor's scores. Same has been taken into account for the average score calculated for each row.&lt;br /&gt;
&lt;br /&gt;
[[File:Score_hover.png]]&lt;br /&gt;
&lt;br /&gt;
Like shown in the above picture we can see a info button on which if we hover the text is shown.&lt;br /&gt;
&lt;br /&gt;
Possible icons :&lt;br /&gt;
 [[File:Instuctor.jpg]]  [[File:Instructor1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
'''Features testing:''' Many of our changes are reflected on views (user interface). Following is the list of tests that we will conduct with rspec/capybara.&lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs perform a review for the submission of latest finished round if instructor/TAs has not started a review for the submission yet&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs save a review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs review a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs edit a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should allow instructor/TAs perform a review after the deadline for reviewing has passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''More testing:''' &lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs update a review for the submission of latest finished round if instructor/TAs performed and saved a review for the previous round&amp;quot;&lt;br /&gt;
# it &amp;quot;should show &amp;quot;Instructor review&amp;quot; when a student views feedback on his/her submission if an instructor/TA has reviewed his/his team's work&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average peer review score for the team&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average score for each question in the review&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== '''Team''' ==&lt;br /&gt;
'''Members : '''&lt;br /&gt;
Harsh Shah, &lt;br /&gt;
Prachi Gupta, &lt;br /&gt;
Ramkumaar Kovil Kanthadai, &lt;br /&gt;
Raveena D'Costa.&lt;br /&gt;
&lt;br /&gt;
'''Mentor :''' Dr.Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&lt;br /&gt;
* https://expertiza.ncsu.edu/ &lt;br /&gt;
&lt;br /&gt;
Pull Request&lt;br /&gt;
* https://github.com/expertiza/expertiza/pull/1304&lt;br /&gt;
&lt;br /&gt;
Expertiza Github&lt;br /&gt;
* https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
Expertiza Documentation&lt;br /&gt;
* http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Latest_screen_instructor.JPG&amp;diff=121575</id>
		<title>File:Latest screen instructor.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Latest_screen_instructor.JPG&amp;diff=121575"/>
		<updated>2018-12-18T03:48:40Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121574</id>
		<title>CSC/ECE 517 Fall 2018/E1855 let course staff as well as students do reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=121574"/>
		<updated>2018-12-18T03:37:35Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Proposed Solutions and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
The way Expertiza is set up right now is that only peers can review your work. However, there are cases when the course staff (Instructor/ TAs) would want to submit reviews as well. This project aims to implement this feature by allowing course staff to review the project on the same metrics as other students who review the project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
&lt;br /&gt;
The current system does not allow instructors to submit reviews of student work. We will work upon the feature which will let them review using the same review form that students use to do reviews.&lt;br /&gt;
&lt;br /&gt;
=== Current scenario ===&lt;br /&gt;
&lt;br /&gt;
This is how some of the pages we are concerned with, currently look.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Submissions page for an assignment in Instructor View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Submissions_instr.jpeg | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A typical Scores table in a Student View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Grades_view_team_current.png | center]]&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solutions and Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
Following changes will be made to let staff perform reviews as well:&lt;br /&gt;
&lt;br /&gt;
'''Step 1: Add a way for the instructors to perform a review.'''&lt;br /&gt;
&lt;br /&gt;
We have implemented links to ''Begin review'', ''Edit review'','' View review'' and ''Submit review'' in the assignment submissions view. &lt;br /&gt;
When the instructor/TA reviews a work for the first time, he/she is added as a participant and a review response mapping is created. &lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''View: ''' ''app/views/assignments/list_submissions.html.erb'' - To add links in the instructor view&lt;br /&gt;
* '''Controller: ''' ''app/controllers/review_mapping_controller.rb''  - Method: add_instructor_as_reviewer&lt;br /&gt;
  &lt;br /&gt;
In the second case, we can see a 'Begin review' link. This is the initial state when instructor review has not been added to the submission.&lt;br /&gt;
Once the instructor adds a review and submits it, we can see the 'Update review' link. If the deadline has passed, Update Review will change to View Review. In case he just saves the review, an 'Edit review' link will appear.&lt;br /&gt;
If the review deadline of one round is passed, the 'Edit review' link becomes 'Update review' link. This follows in line with what the student sees while performing a review. Similarly, just like students instructor would not able to edit or update the review once submitted.&lt;br /&gt;
&lt;br /&gt;
[[File:Ins_TA_Review.png]]&lt;br /&gt;
&lt;br /&gt;
'''Step 2: Add the instructor review in ''Your Scores'' table in case he has reviewed your work. Provide an icon to highlight the special nature of an instructors review.'''&lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''Assets: ''' ''app/assets/stylesheets/grades.scss'' - Icon to make an instructor's review distinct from other reviews&lt;br /&gt;
* '''View: ''' ''app/views/grades/view_team.html.erb'' - To modify the &amp;quot;Your scores&amp;quot; page to include an icon next to the peer review score indicating that the instructor's score is not included in the final peer review score.&lt;br /&gt;
* '''Models: ''' &lt;br /&gt;
** ''app/models/answer.rb'' - Method: compute_scores | Modification in logic to ensure instructor review scores are not counted in the overall score of the student.&lt;br /&gt;
** ''app/models/vm_question_response_score_cell.rb'' - Included a new variable called 'is_instructor_review' to identify an instructor review&lt;br /&gt;
** ''app/models/vm_question_response_row.rb'' - Change in average_score_for_row method to not include an instructor review score&lt;br /&gt;
** ''app/models/vm_question_response.rb'' - Modified the add_answer method to include the is_instructor_review to each row_score object&lt;br /&gt;
&lt;br /&gt;
A student should be able to make out if an instructor has reviewed his/his team's work. In case the instructor performs a review on the team's work, there will be an icon next to the instructor's review along with explicitly stating that it is an 'Instructor review'.&lt;br /&gt;
The average peer review score for the team has been modified to exclude the instructor's scores. Same has been taken into account for the average score calculated for each row.&lt;br /&gt;
&lt;br /&gt;
[[File:Score_hover.png]]&lt;br /&gt;
&lt;br /&gt;
Like shown in the above picture we can see a info button on which if we hover the text is shown.&lt;br /&gt;
&lt;br /&gt;
Possible icons :&lt;br /&gt;
 [[File:Instuctor.jpg]]  [[File:Instructor1.jpg]]&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
'''Features testing:''' Many of our changes are reflected on views (user interface). Following is the list of tests that we will conduct with rspec/capybara.&lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs perform a review for the submission of latest finished round if instructor/TAs has not started a review for the submission yet&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs save a review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs review a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs edit a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should allow instructor/TAs perform a review after the deadline for reviewing has passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''More testing:''' &lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs update a review for the submission of latest finished round if instructor/TAs performed and saved a review for the previous round&amp;quot;&lt;br /&gt;
# it &amp;quot;should show &amp;quot;Instructor review&amp;quot; when a student views feedback on his/her submission if an instructor/TA has reviewed his/his team's work&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average peer review score for the team&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average score for each question in the review&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== '''Team''' ==&lt;br /&gt;
'''Members : '''&lt;br /&gt;
Harsh Shah, &lt;br /&gt;
Prachi Gupta, &lt;br /&gt;
Ramkumaar Kovil Kanthadai, &lt;br /&gt;
Raveena D'Costa.&lt;br /&gt;
&lt;br /&gt;
'''Mentor :''' Dr.Edward Gehringer&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&lt;br /&gt;
* https://expertiza.ncsu.edu/ &lt;br /&gt;
&lt;br /&gt;
Pull Request&lt;br /&gt;
* https://github.com/expertiza/expertiza/pull/1304&lt;br /&gt;
&lt;br /&gt;
Expertiza Github&lt;br /&gt;
* https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
Expertiza Documentation&lt;br /&gt;
* http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=120704</id>
		<title>CSC/ECE 517 Fall 2018/E1855 let course staff as well as students do reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2018/E1855_let_course_staff_as_well_as_students_do_reviews&amp;diff=120704"/>
		<updated>2018-11-21T04:29:50Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Proposed Solutions and Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''Introduction''' ==&lt;br /&gt;
&lt;br /&gt;
The way Expertiza is set up right now is that only peers can review your work. However, there are cases when the course staff (Instructor/ TAs) would want to submit reviews as well. This project aims to implement this feature by allowing course staff to review the project on the same metrics as other students who review the project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Problem Statement''' ==&lt;br /&gt;
&lt;br /&gt;
The current system does not allow instructors to submit reviews of student work. We will work upon the feature which will let them review using the same review form that students use to do reviews.&lt;br /&gt;
&lt;br /&gt;
=== Current scenario ===&lt;br /&gt;
&lt;br /&gt;
This is how some of the pages we are concerned with, currently look.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Submissions page for an assignment in Instructor View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Submissions_instr.jpeg | center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A typical Scores table in a Student View ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Grades_view_team_current.png | center]]&lt;br /&gt;
&lt;br /&gt;
== '''Proposed Solutions and Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
Following changes will be made to let staff perform reviews as well:&lt;br /&gt;
&lt;br /&gt;
'''Step 1: Add a way for the instructors to perform a review.'''&lt;br /&gt;
&lt;br /&gt;
We are planning to implement links to ''Begin review'', ''Edit review'','' View review'' and ''Submit review'' in the assignment submissions view. &lt;br /&gt;
When the instructor/TA reviews a work for the first time, he/she is added as a participant and a review response mapping is created. &lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''View: ''' ''app/views/assignments/list_submissions.html.erb'' - To add links in the instructor view&lt;br /&gt;
* '''Controller: ''' ''app/controllers/review_mapping_controller.rb''  - Method: add_instructor_as_reviewer&lt;br /&gt;
  &lt;br /&gt;
In the second case, we can see a 'Begin review' link. This is the initial state when instructor review has not been added to the submission.&lt;br /&gt;
Once the instructor adds a review and submits it, we can see the 'View review' link. In case he just saves the review, an 'Edit review' link will appear.&lt;br /&gt;
If the review deadline of one round is passed, the 'Edit review' link becomes 'Update review' link. This follows in line with what the student sees while performing a review. Similarly, just like students instructor would not able to edit or update the review once submitted.&lt;br /&gt;
&lt;br /&gt;
'''Step 2: Add the instructor review in ''Your Scores'' table in case he has reviewed your work. Provide an icon to highlight the special nature of an instructors review.'''&lt;br /&gt;
&lt;br /&gt;
Files edited:&lt;br /&gt;
* '''Assets: ''' ''app/assets/stylesheets/grades.scss'' - Icon to make an instructor's review distinct from other reviews&lt;br /&gt;
* '''View: ''' ''app/views/grades/view_team.html.erb'' - To modify the &amp;quot;Your scores&amp;quot; page to include an icon next to the peer review score indicating that the instructor's score is not included in the final peer review score.&lt;br /&gt;
* '''Models: ''' &lt;br /&gt;
** ''app/models/answer.rb'' - Method: compute_scores | Modification in logic to ensure instructor review scores are not counted in the overall score of the student.&lt;br /&gt;
** ''app/models/vm_question_response_score_cell.rb'' - Included a new variable called 'is_instructor_review' to identify an instructor review&lt;br /&gt;
** ''app/models/vm_question_response_row.rb'' - Change in average_score_for_row method to not include an instructor review score&lt;br /&gt;
** ''app/models/vm_question_response.rb'' - Modified the add_answer method to include the is_instructor_review to each row_score object&lt;br /&gt;
&lt;br /&gt;
A student should be able to make out if an instructor has reviewed his/his team's work. In case the instructor performs a review on the team's work, there will be an icon next to the instructor's review along with explicitly stating that it is an 'Instructor review'.&lt;br /&gt;
The average peer review score for the team has been modified to exclude the instructor's scores. Same has been taken into account for the average score calculated for each row.&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
'''Features testing:''' Many of our changes are reflected on views (user interface). Following is the list of tests that we will conduct with rspec/capybara.&lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs perform a review for the submission of latest finished round if instructor/TAs has not started a review for the submission yet&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs save a review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs review a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should let instructor/TAs edit a previously saved review&amp;quot;&lt;br /&gt;
# it &amp;quot;should allow instructor/TAs perform a review after the deadline for reviewing has passed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''More testing:''' &lt;br /&gt;
&lt;br /&gt;
# it &amp;quot;should let instructor/TAs update a review for the submission of latest finished round if instructor/TAs performed and saved a review for the previous round&amp;quot;&lt;br /&gt;
# it &amp;quot;should show &amp;quot;Instructor review&amp;quot; when a student views feedback on his/her submission if an instructor/TA has reviewed his/his team's work&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average peer review score for the team&amp;quot;&lt;br /&gt;
# it &amp;quot;should exclude the instructor's/TA's review score when calculating the average score for each question in the review&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&lt;br /&gt;
* https://expertiza.ncsu.edu/ &lt;br /&gt;
&lt;br /&gt;
Expertiza Github&lt;br /&gt;
* https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
Expertiza Documentation&lt;br /&gt;
* http://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119164</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119164"/>
		<updated>2018-11-10T00:07:30Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843- Issues Related to Topic Deadlines OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first wait-listed team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GITHUB: https://github.com/expertiza/expertiza&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork: https://github.com/harshshah949494/expertiza&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website : https://drive.google.com/open?id=1jUwbeeiI2KaIH3l0C7FD0QHgBL6PVwF1&lt;br /&gt;
&lt;br /&gt;
4. Demo link: https://drive.google.com/open?id=1jUwbeeiI2KaIH3l0C7FD0QHgBL6PVwF1&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki: http://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;amp;action=edit&amp;amp;section=7&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119162</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119162"/>
		<updated>2018-11-10T00:05:30Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843- Issues Related to Topic Deadlines OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first wait-listed team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on &lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository [Fork]https://github.com/harshshah949494/expertiza&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119161</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119161"/>
		<updated>2018-11-10T00:05:02Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843- Issues Related to Topic Deadlines OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first wait-listed team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on &lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository [https://github.com/harshshah949494/expertiza}[[Fork]]&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119160</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119160"/>
		<updated>2018-11-10T00:04:40Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843- Issues Related to Topic Deadlines OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first wait-listed team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on &lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository https://github.com/harshshah949494/expertiza[[Fork]]&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119157</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119157"/>
		<updated>2018-11-09T23:57:09Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843- Issues Related to Topic Deadlines OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first wait-listed team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GitHub&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119154</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119154"/>
		<updated>2018-11-09T23:53:42Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Issues in the Current Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843 OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first wait-listed team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GitHub&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119152</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119152"/>
		<updated>2018-11-09T23:51:37Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843 OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
It was discussed that project does not require any Unit Test cases to be implemented as the changes are mostly visible in views.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GitHub&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119150</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119150"/>
		<updated>2018-11-09T23:50:29Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Current Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843 OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams for that topic. &lt;br /&gt;
2. Changes are made in Assignments View to add an additional column for Drop-Topic Deadline for Staggered Deadlines Assignment. The code snippets for corresponding changes in controllers and models are as below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
The project does not require any Unit Test cases to be implemented.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GitHub&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119146</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119146"/>
		<updated>2018-11-09T23:45:37Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Corrections made in the New Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843 OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot;(signup option) in the Sign-Up sheet disables so that the student cannot drop the topic and the wait-list for that topic is cleared, which will resolve the issue of the topic being assigned to a wait-listed team very close to the submission deadline.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.The above resolution also works for Staggered Deadlines Assignment&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams. The code snippets for the changes made are attached below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
The project does not require any Unit Test cases to be implemented.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GitHub&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119143</id>
		<title>E1843 Issues Related To Deadlines</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=E1843_Issues_Related_To_Deadlines&amp;diff=119143"/>
		<updated>2018-11-09T23:43:13Z</updated>

		<summary type="html">&lt;p&gt;Hshah3: /* Issues in the Current Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E1843 OSS assignment for Fall 2018, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''About Expertiza''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Expertiza is an open source project based on Ruby on Rails framework and the code is available on Github. Expertiza allows the instructor to create new assignments as well as edit new or existing assignments. Instructors can also create a list of topics the students can sign up for and specify deadlines for completion of various tasks. Students can form teams in Expertiza to work on various projects and assignments as well as peer review other students' submissions. Expertiza supports submission across various document types, including the URLs Wiki pages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== '''Issues in the Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1.There is no deadline that specifies when a team can drop their topics. Due to this, few problems occur: The team might drop a topic later on which is close to the submission date and this results in topic not being assigned to any other team on time such that they can submit their assignment. Also, if one team was wait listed for the same topic which the other team dropped closer to the submission deadline, then the first team will be assigned to the dropped topic which is not desirable as they might be working on their assigned topic for long time.&lt;br /&gt;
&lt;br /&gt;
2.There are different topics on which students can work during different times. This type of assignment is known as Staggered- deadline assignment in which different topics have different submission and review deadlines. For these assignments too, there is a need for &amp;quot;Drop Topics Deadline&amp;quot;. In the current implementation, the drop topic deadline is same for all the topics in a Staggered Deadline assignment which is not desirable.&lt;br /&gt;
&lt;br /&gt;
== '''Corrections made in the New Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. The instructor can specify a Drop Topic deadline date now. After a drop topic deadline passes, the &amp;quot;X&amp;quot; in the Sign-Up sheet disables so that the student cannot drop the topic and the waitlist gets cleared.&lt;br /&gt;
&lt;br /&gt;
2. Staggered deadline assignments now have different drop deadlines for different topics in that assignment.&lt;br /&gt;
&lt;br /&gt;
== '''Files modified in Current Project''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
2. app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
3. app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
4. app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
5. app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
6. app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
== '''Current Implementation''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Clearing the waitlist after Drop Deadline passes is implemented in sign_up_sheet_controller.rb where it is checked if the current time is greater than the time mentioned in Drop deadline. If the deadline has been passed, the 'update_is_waitlisted' method of SignedUpTeam model is called to delete all the waitlisted teams. The code snippets for the changes made are attached below:&lt;br /&gt;
&lt;br /&gt;
(i) app/controllers/sign_up_sheet_controller.rb&lt;br /&gt;
&lt;br /&gt;
    if !topic_id1.nil? and !@drop_topic_deadline1.nil? and Time.now &amp;gt; @drop_topic_deadline1.due_at&lt;br /&gt;
    SignedUpTeam.update_is_waitlisted(topic_id1.topic_id,team_id) end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(ii) The 'update_is_waitlisted' method is implemented in app/models/signed_up_team.rb as follows:&lt;br /&gt;
&lt;br /&gt;
     def self.update_is_waitlisted(topic_i)&lt;br /&gt;
     topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
     if @assignment.staggered_deadline?&lt;br /&gt;
     @drop_topic_deadline1 = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil end&lt;br /&gt;
     due_dates = params[:due_date]&lt;br /&gt;
     topics = SignUpTopic.where(assignment_id: params[:assignment_id])&lt;br /&gt;
     review_rounds = assignment.num_review_rounds&lt;br /&gt;
     topics.each_with_index do |topic, index|&lt;br /&gt;
     for i in 1..review_rounds&lt;br /&gt;
         @topic_drop_topic_due_date = due_dates[topics[index].id.to_s + '_drop_topic_' + i.to_s + '_due_date']&lt;br /&gt;
         if assignment.due_dates.select {|due_date| due_date.deadline_type_id == 6 }.nil?&lt;br /&gt;
         @assignment_drop_topic_due_date = DateTime.parse(@assignment_drop_topic_due_dates[i - 1].due_at.to_s).strftime(&amp;quot;%Y-%m-%d %H:%M&amp;quot;)&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(iii) app/helpers/sign_up_sheet_helper.rb&lt;br /&gt;
&lt;br /&gt;
      if assignment_due_dates.length == 0&lt;br /&gt;
         assignment_due_dates = @assignment_submission_due_dates&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
(iv) app/models/student_task.rb&lt;br /&gt;
&lt;br /&gt;
     def self.get_due_date_data(assignment, timeline_list, participant)&lt;br /&gt;
     if assignment.staggered_deadline?&lt;br /&gt;
        team_id = participant.team.try(:id)&lt;br /&gt;
        topic_id1 = SignedUpTeam.where(team_id: team_id).first&lt;br /&gt;
        if !topic_id1.nil?&lt;br /&gt;
           topic_due_date = TopicDueDate.where(parent_id: topic_id1.topic_id, deadline_type_id: 6).first rescue nil&lt;br /&gt;
           timeline = {label: ('Drop Topic Deadline').humanize}&lt;br /&gt;
           timeline[:updated_at] = topic_due_date.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
        end&lt;br /&gt;
     end&lt;br /&gt;
     assignment.due_dates.each do |dd|&lt;br /&gt;
     timeline = {label: (dd.deadline_type.name + ' Deadline').humanize}&lt;br /&gt;
     unless dd.due_at.nil?&lt;br /&gt;
           timeline[:updated_at] = dd.due_at.strftime('%a, %d %b %Y %H:%M')&lt;br /&gt;
           timeline_list &amp;lt;&amp;lt; timeline&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
     end&lt;br /&gt;
&lt;br /&gt;
(v) app/views/assignments/edit.html.erb&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;% if @assignment_form.assignment.staggered_deadline == true %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render partial: '/sign_up_sheet/add_signup_topics_staggered', locals: {review_rounds: @review_rounds, assignment_submission_due_dates:        @assignment_submission_due_dates, assignment_review_due_dates: @assignment_review_due_dates, assignment_drop_topic_due_dates: @assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
    &amp;lt;% else %&amp;gt;&lt;br /&gt;
    &amp;lt;%= render '/sign_up_sheet/add_signup_topics' %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vi) app/views/sign_up_sheet/_add_signup_topics_staggered.html.erb&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;%= form_tag :controller =&amp;gt; 'sign_up_sheet', :action =&amp;gt; 'save_topic_deadlines', :assignment_id =&amp;gt; @assignment.id do %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;br/&amp;gt;&amp;lt;%= render :partial =&amp;gt; '/sign_up_sheet/due_dates', :locals =&amp;gt; {review_rounds: review_rounds, assignment_submission_due_dates:    assignment_submission_due_dates, assignment_review_due_dates: assignment_review_due_dates, assignment_drop_topic_due_dates: assignment_drop_topic_due_dates} %&amp;gt;&lt;br /&gt;
     &amp;lt;% end %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(vii) app/views/sign_up_sheet/_due_dates.html.erb&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Drop deadline&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;%for i in 2..review_rounds%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= @assignment.sign_up_topics[i].topic_name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;% for review_round in 1..review_rounds %&amp;gt;&lt;br /&gt;
      &amp;lt;% topic_id = @assignment.sign_up_topics[i].id %&amp;gt;&lt;br /&gt;
      &amp;lt;%if review_round == 1 %&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_drop_topic_' + review_round.to_s + '_due_date').to_s, size: 20, value:    check_topic_due_date_value(assignment_drop_topic_due_dates, topic_id, 6, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value:   check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_submission_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_submission_due_dates, topic_id, 1, review_round) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
      &amp;lt;td&amp;gt;&amp;lt;%= text_field :due_date, (topic_id.to_s + '_review_' + review_round.to_s + '_due_date').to_s, size: 20, value: check_topic_due_date_value(assignment_review_due_dates, topic_id, 2, review_round) %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== '''Test Plan''' ==&lt;br /&gt;
&lt;br /&gt;
The project does not require any Unit Test cases to be implemented.&lt;br /&gt;
&lt;br /&gt;
== '''References''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Expertiza on GitHub&lt;br /&gt;
&lt;br /&gt;
2. GitHub Project Repository Fork&lt;br /&gt;
&lt;br /&gt;
3. The live Expertiza website&lt;br /&gt;
&lt;br /&gt;
4. Demo link&lt;br /&gt;
&lt;br /&gt;
5. Expertiza project documentation wiki&lt;/div&gt;</summary>
		<author><name>Hshah3</name></author>
	</entry>
</feed>