<?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=Xchen33</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=Xchen33"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Xchen33"/>
	<updated>2026-09-11T18:57:57Z</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_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137177</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137177"/>
		<updated>2020-11-17T04:21:04Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* New Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== UML Activity Diagram ==&lt;br /&gt;
[[File:517 Final Project Student UML.jpg]]&lt;br /&gt;
[[File:517 Final Project Instructor UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Manual Test Plan ===&lt;br /&gt;
&lt;br /&gt;
To verify the conflict notification is working correctly, a mock assignment will be created and two reviews will be entered that should trigger a conflict. Successful retrieval of the email and verification of the links included in the email will provide sufficient verification that the changes were successful.&lt;br /&gt;
&lt;br /&gt;
=== File Changes ===&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Implemented Solution ==&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
&lt;br /&gt;
Moved following methods from review_mapping_helper.rb to report_formatter_helper.rb&lt;br /&gt;
&lt;br /&gt;
* average_of_round&lt;br /&gt;
* std_of_round&lt;br /&gt;
* review_score_helper_for_team&lt;br /&gt;
* review_score_for_team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New Implementation   ===&lt;br /&gt;
Adding base_url from the controller as this method is not accessible from model&lt;br /&gt;
&amp;lt;pre&amp;gt; @response.notify_instructor_on_difference(request.base_url) if (@map.is_a? ReviewResponseMap) &lt;br /&gt;
                       &amp;amp;&amp;amp; @response.is_submitted &amp;amp;&amp;amp; @response.significant_difference?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;     if (@map.is_a? ReviewResponseMap) &amp;amp;&amp;amp; (was_submitted == false &amp;amp;&amp;amp; @response.is_submitted) &amp;amp;&amp;amp; @response.significant_difference?&lt;br /&gt;
       @response.notify_instructor_on_difference&lt;br /&gt;
       @response.notify_instructor_on_difference(request.base_url)&lt;br /&gt;
       @response.email&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This method generates statistics (average, standard deviation, tolerance limits) for each round. This method was created to move logic that was previously contained in a view to a helper class.&lt;br /&gt;
&amp;lt;pre&amp;gt;def review_statistics(id, team_name)&lt;br /&gt;
     res = []&lt;br /&gt;
     question_answers = review_score_for_team(id, team_name)&lt;br /&gt;
     question_answers.each do |question_answer|&lt;br /&gt;
       round = {}&lt;br /&gt;
       round[:question_answer] = question_answer&lt;br /&gt;
       round[:average] = average_of_round(question_answer)&lt;br /&gt;
       round[:std] = std_of_round(round[:average], question_answer)&lt;br /&gt;
       round[:upper_tolerance_limit] = (round[:average]+(2*round[:std])).round(2)&lt;br /&gt;
       round[:lower_tolerance_limit] = (round[:average]-(2*round[:std])).round(2)&lt;br /&gt;
       res.push(round)&lt;br /&gt;
     end&lt;br /&gt;
     res&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This logic highlights all reviews' score in red which is out of limit range, and all other background color will be green.&lt;br /&gt;
&amp;lt;pre&amp;gt;      if answer &amp;gt; upper_tolerance_limit or answer &amp;lt; lower_tolerance_limit&lt;br /&gt;
         colors &amp;lt;&amp;lt; &amp;quot;rgba(255,99,132,0.8)&amp;quot; # red&lt;br /&gt;
        end&lt;br /&gt;
       else&lt;br /&gt;
         colors &amp;lt;&amp;lt; &amp;quot;rgba(77, 175, 124, 1)&amp;quot; # green       &lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Passing the colors to bar background.&lt;br /&gt;
&amp;lt;pre&amp;gt;backgroundColor: colors&amp;lt;/pre&amp;gt;&lt;br /&gt;
comprising the chart height for how much it need to clearly display all data.&lt;br /&gt;
&amp;lt;pre&amp;gt; height: 4*question_answer.size() + 14 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UI Improvements ===&lt;br /&gt;
&lt;br /&gt;
Based on the previous changes from last group, the notification email triggered will send to the instructor whenever a new review is significantly different from other people's review, who has the same submission team (the threshold is specified in the &amp;quot;Notification limit&amp;quot; on the Rubric tab of assignment creation).&lt;br /&gt;
The graph showing below is the previous team email UI.&lt;br /&gt;
&lt;br /&gt;
[[File:afteremail.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
On the email notification, the formatting can be improved to make it more readable and clear as to which links relate to what actions and what caused the conflict to trigger.&lt;br /&gt;
&lt;br /&gt;
The previous group of snapshot for the view which the instructor receives&lt;br /&gt;
&lt;br /&gt;
[[File:afterfix.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
On the 'review for mail check' page, more information can be added to indicate if a review has a conflict. We will add indicators beside each review that have conflicts. We added a link for review_conflict_report_url, which will let instructor to access the review conflict report page by the email he received. &lt;br /&gt;
&lt;br /&gt;
[[File:E2087 Conflict Notification.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Chart before improvements.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Chart before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Chart after improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Chart after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The improved chart has the student name on the y-axis, scaled chart sizes, and more intuitive highlighting with red bars indicating an out of limits score. This is a great improvement to the previous implementation where only the student name was highlighted to indicate an out of limit score.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1840 &amp;lt;br&amp;gt;&lt;br /&gt;
Demo Video - https://youtu.be/D_e80coRkLk&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page - [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo - [https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137176</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137176"/>
		<updated>2020-11-17T04:17:48Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Conflict Report Chart Improvements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== UML Activity Diagram ==&lt;br /&gt;
[[File:517 Final Project Student UML.jpg]]&lt;br /&gt;
[[File:517 Final Project Instructor UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Manual Test Plan ===&lt;br /&gt;
&lt;br /&gt;
To verify the conflict notification is working correctly, a mock assignment will be created and two reviews will be entered that should trigger a conflict. Successful retrieval of the email and verification of the links included in the email will provide sufficient verification that the changes were successful.&lt;br /&gt;
&lt;br /&gt;
=== File Changes ===&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Implemented Solution ==&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
&lt;br /&gt;
Moved following methods from review_mapping_helper.rb to report_formatter_helper.rb&lt;br /&gt;
&lt;br /&gt;
* average_of_round&lt;br /&gt;
* std_of_round&lt;br /&gt;
* review_score_helper_for_team&lt;br /&gt;
* review_score_for_team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New Implementation   ===&lt;br /&gt;
Adding base_url from the controller as this method is not accessible from model&lt;br /&gt;
&amp;lt;pre&amp;gt; @response.notify_instructor_on_difference(request.base_url) if (@map.is_a? ReviewResponseMap) &lt;br /&gt;
                       &amp;amp;&amp;amp; @response.is_submitted &amp;amp;&amp;amp; @response.significant_difference?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;     if (@map.is_a? ReviewResponseMap) &amp;amp;&amp;amp; (was_submitted == false &amp;amp;&amp;amp; @response.is_submitted) &amp;amp;&amp;amp; @response.significant_difference?&lt;br /&gt;
       @response.notify_instructor_on_difference&lt;br /&gt;
       @response.notify_instructor_on_difference(request.base_url)&lt;br /&gt;
       @response.email&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This method generates statistics (average, standard deviation, tolerance limits) for each round. This method was created to move logic that was previously contained in a view to a helper class.&lt;br /&gt;
&amp;lt;pre&amp;gt;def review_statistics(id, team_name)&lt;br /&gt;
     res = []&lt;br /&gt;
     question_answers = review_score_for_team(id, team_name)&lt;br /&gt;
     question_answers.each do |question_answer|&lt;br /&gt;
       round = {}&lt;br /&gt;
       round[:question_answer] = question_answer&lt;br /&gt;
       round[:average] = average_of_round(question_answer)&lt;br /&gt;
       round[:std] = std_of_round(round[:average], question_answer)&lt;br /&gt;
       round[:upper_tolerance_limit] = (round[:average]+(2*round[:std])).round(2)&lt;br /&gt;
       round[:lower_tolerance_limit] = (round[:average]-(2*round[:std])).round(2)&lt;br /&gt;
       res.push(round)&lt;br /&gt;
     end&lt;br /&gt;
     res&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This logic highlights all reviews' score in red which is out of limit range.&lt;br /&gt;
&amp;lt;pre&amp;gt;      if answer &amp;gt; upper_tolerance_limit or answer &amp;lt; lower_tolerance_limit&lt;br /&gt;
         colors &amp;lt;&amp;lt; &amp;quot;rgba(255,99,132,0.8)&amp;quot; # red&lt;br /&gt;
        end&lt;br /&gt;
       else&lt;br /&gt;
         colors &amp;lt;&amp;lt; &amp;quot;rgba(77, 175, 124, 1)&amp;quot; # green       &lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Passing the colors to bar background.&lt;br /&gt;
&amp;lt;pre&amp;gt;backgroundColor: colors&amp;lt;/pre&amp;gt;&lt;br /&gt;
comprising the chart height for how much it need to clearly display all data.&lt;br /&gt;
&amp;lt;pre&amp;gt; height: 4*question_answer.size() + 14 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UI Improvements ===&lt;br /&gt;
&lt;br /&gt;
Based on the previous changes from last group, the notification email triggered will send to the instructor whenever a new review is significantly different from other people's review, who has the same submission team (the threshold is specified in the &amp;quot;Notification limit&amp;quot; on the Rubric tab of assignment creation).&lt;br /&gt;
The graph showing below is the previous team email UI.&lt;br /&gt;
&lt;br /&gt;
[[File:afteremail.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
On the email notification, the formatting can be improved to make it more readable and clear as to which links relate to what actions and what caused the conflict to trigger.&lt;br /&gt;
&lt;br /&gt;
The previous group of snapshot for the view which the instructor receives&lt;br /&gt;
&lt;br /&gt;
[[File:afterfix.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
On the 'review for mail check' page, more information can be added to indicate if a review has a conflict. We will add indicators beside each review that have conflicts. We added a link for review_conflict_report_url, which will let instructor to access the review conflict report page by the email he received. &lt;br /&gt;
&lt;br /&gt;
[[File:E2087 Conflict Notification.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Chart before improvements.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Chart before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Chart after improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Chart after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The improved chart has the student name on the y-axis, scaled chart sizes, and more intuitive highlighting with red bars indicating an out of limits score. This is a great improvement to the previous implementation where only the student name was highlighted to indicate an out of limit score.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1840 &amp;lt;br&amp;gt;&lt;br /&gt;
Demo Video - https://youtu.be/D_e80coRkLk&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page - [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo - [https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137173</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137173"/>
		<updated>2020-11-17T04:08:29Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* UI Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== UML Activity Diagram ==&lt;br /&gt;
[[File:517 Final Project Student UML.jpg]]&lt;br /&gt;
[[File:517 Final Project Instructor UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Manual Test Plan ===&lt;br /&gt;
&lt;br /&gt;
To verify the conflict notification is working correctly, a mock assignment will be created and two reviews will be entered that should trigger a conflict. Successful retrieval of the email and verification of the links included in the email will provide sufficient verification that the changes were successful.&lt;br /&gt;
&lt;br /&gt;
=== File Changes ===&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Implemented Solution ==&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
&lt;br /&gt;
Moved following methods from review_mapping_helper.rb to report_formatter_helper.rb&lt;br /&gt;
&lt;br /&gt;
* average_of_round&lt;br /&gt;
* std_of_round&lt;br /&gt;
* review_score_helper_for_team&lt;br /&gt;
* review_score_for_team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New Implementation   ===&lt;br /&gt;
Adding base_url from the controller as this method is not accessible from model&lt;br /&gt;
&amp;lt;pre&amp;gt; @response.notify_instructor_on_difference(request.base_url) if (@map.is_a? ReviewResponseMap) &lt;br /&gt;
                       &amp;amp;&amp;amp; @response.is_submitted &amp;amp;&amp;amp; @response.significant_difference?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;     if (@map.is_a? ReviewResponseMap) &amp;amp;&amp;amp; (was_submitted == false &amp;amp;&amp;amp; @response.is_submitted) &amp;amp;&amp;amp; @response.significant_difference?&lt;br /&gt;
       @response.notify_instructor_on_difference&lt;br /&gt;
       @response.notify_instructor_on_difference(request.base_url)&lt;br /&gt;
       @response.email&lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This method generates statistics (average, standard deviation, tolerance limits) for each round. This method was created to move logic that was previously contained in a view to a helper class.&lt;br /&gt;
&amp;lt;pre&amp;gt;def review_statistics(id, team_name)&lt;br /&gt;
     res = []&lt;br /&gt;
     question_answers = review_score_for_team(id, team_name)&lt;br /&gt;
     question_answers.each do |question_answer|&lt;br /&gt;
       round = {}&lt;br /&gt;
       round[:question_answer] = question_answer&lt;br /&gt;
       round[:average] = average_of_round(question_answer)&lt;br /&gt;
       round[:std] = std_of_round(round[:average], question_answer)&lt;br /&gt;
       round[:upper_tolerance_limit] = (round[:average]+(2*round[:std])).round(2)&lt;br /&gt;
       round[:lower_tolerance_limit] = (round[:average]-(2*round[:std])).round(2)&lt;br /&gt;
       res.push(round)&lt;br /&gt;
     end&lt;br /&gt;
     res&lt;br /&gt;
   end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This logic highlights all reviews' score in red which is out of limit range.&lt;br /&gt;
&amp;lt;pre&amp;gt;      if answer &amp;gt; upper_tolerance_limit or answer &amp;lt; lower_tolerance_limit&lt;br /&gt;
         colors &amp;lt;&amp;lt; &amp;quot;rgba(255,99,132,0.8)&amp;quot; # red&lt;br /&gt;
        end&lt;br /&gt;
       else&lt;br /&gt;
         colors &amp;lt;&amp;lt; &amp;quot;rgba(77, 175, 124, 1)&amp;quot; # green       &lt;br /&gt;
     end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Passing the colors to bar background.&lt;br /&gt;
&amp;lt;pre&amp;gt;backgroundColor: colors&amp;lt;/pre&amp;gt;&lt;br /&gt;
comprising the chart height for how much it need to clearly display all data.&lt;br /&gt;
&amp;lt;pre&amp;gt; height: 4*question_answer.size() + 14 &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conflict Report Chart Improvements ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chart before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Chart before improvements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Chart after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
Chart after improvements.&lt;br /&gt;
&lt;br /&gt;
The improved chart has the student name on the y-axis, scaled chart sizes, and more intuitive highlighting with red bars indicating an out of limits score. This is a great improvement to the previous implementation where only the student name was highlighted to indicate an out of limit score.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1840 &amp;lt;br&amp;gt;&lt;br /&gt;
Demo Video - https://youtu.be/D_e80coRkLk&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page - [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo - [https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137105</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=137105"/>
		<updated>2020-11-17T01:03:05Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== UML Activity Diagram ==&lt;br /&gt;
[[File:517 Final Project Student UML.jpg]]&lt;br /&gt;
[[File:517 Final Project Instructor UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
Based on the previous changes from last group, the notification email triggered will send to the instructor whenever two reviews for the same submission differ &amp;quot;significantly&amp;quot; on their scoring (the threshold is specified in the &amp;quot;Notification limit&amp;quot; on the Rubric tab of assignment creation).&lt;br /&gt;
&lt;br /&gt;
[[File:afteremail.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
On the email notification, the formatting can be improved to make it more readable and clear as to which links relate to what actions and what caused the conflict to trigger.&lt;br /&gt;
&lt;br /&gt;
The previous group of snapshot for the view which the instructor receives&lt;br /&gt;
&lt;br /&gt;
[[File:afterfix.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
On the 'review for mail check' page, more information can be added to indicate if a review has a conflict. We will add indicators beside each review that have conflicts.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Manual Test Plan ===&lt;br /&gt;
&lt;br /&gt;
To verify the conflict notification is working correctly, a mock assignment will be created and two reviews will be entered that should trigger a conflict. Successful retrieval of the email and verification of the links included in the email will provide sufficient verification that the changes were successful.&lt;br /&gt;
&lt;br /&gt;
=== File Changes ===&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Implemented Solution ==&lt;br /&gt;
&lt;br /&gt;
=== Refactoring ===&lt;br /&gt;
&lt;br /&gt;
Moved following methods from review_mapping_helper.rb to report_formatter_helper.rb&lt;br /&gt;
&lt;br /&gt;
* average_of_round&lt;br /&gt;
* std_of_round&lt;br /&gt;
* review_score_helper_for_team&lt;br /&gt;
* review_score_for_team&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== New Implementation   ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1840 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page - [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo - [https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136431</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136431"/>
		<updated>2020-10-28T22:17:31Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* UI Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== UML Activity Diagram ==&lt;br /&gt;
[[File:517 Final Project Student UML.jpg]]&lt;br /&gt;
[[File:517 Final Project Instructor UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
Based on the previous changes from last group, the notification email triggered will send to the instructor whenever two reviews for the same submission differ &amp;quot;significantly&amp;quot; on their scoring (the threshold is specified in the &amp;quot;Notification limit&amp;quot; on the Rubric tab of assignment creation).&lt;br /&gt;
&lt;br /&gt;
[[File:afteremail.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
The previous group of snapshot for the view which the instructor receives&lt;br /&gt;
&lt;br /&gt;
[[File:afterfix.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Manual Test Plan ===&lt;br /&gt;
&lt;br /&gt;
To verify the conflict notification is working correctly, a mock assignment will be created and two reviews will be entered that should trigger a conflict. Successful retrieval of the email and verification of the links included in the email will provide sufficient verification that the changes were successful.&lt;br /&gt;
&lt;br /&gt;
=== File Changes ===&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1829 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo -[https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136429</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136429"/>
		<updated>2020-10-28T22:12:40Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== UML Activity Diagram ===&lt;br /&gt;
[[File:517 Final Project Student UML.jpg]]&lt;br /&gt;
[[File:517 Final Project Instructor UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
Based on the previous changes from last group, the notification email triggered will send to the instructor whenever two reviews for the same submission differ &amp;quot;significantly&amp;quot; on their scoring (the threshold is specified in the &amp;quot;Notification limit&amp;quot; on the Rubric tab of assignment creation).&lt;br /&gt;
&lt;br /&gt;
[[File:afteremail.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Manual Test Plan ===&lt;br /&gt;
&lt;br /&gt;
To verify the conflict notification is working correctly, a mock assignment will be created and two reviews will be entered that should trigger a conflict. Successful retrieval of the email and verification of the links included in the email will provide sufficient verification that the changes were successful.&lt;br /&gt;
&lt;br /&gt;
=== File Changes ===&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1829 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo -[https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136418</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136418"/>
		<updated>2020-10-28T21:43:40Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Previous Flow charts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1829 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo -[https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136417</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136417"/>
		<updated>2020-10-28T21:39:36Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request - https://github.com/expertiza/expertiza/pull/1829 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo -[https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136416</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136416"/>
		<updated>2020-10-28T21:39:10Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References / Previous Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
&lt;br /&gt;
*Previous Github Repo -[https://github.com/cshinde57/expertiza Github Repo]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136415</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136415"/>
		<updated>2020-10-28T21:37:49Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References / Previous Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 Pull Request 1445]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136414</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136414"/>
		<updated>2020-10-28T21:37:22Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References / Previous Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request -[https://github.com/expertiza/expertiza/pull/1445 ]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136413</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136413"/>
		<updated>2020-10-28T21:36:55Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References / Previous Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
&lt;br /&gt;
*Previous Pull Request - [https://github.com/expertiza/expertiza/pull/1445]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136412</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136412"/>
		<updated>2020-10-28T21:35:56Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References / Previous Implementation ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136411</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136411"/>
		<updated>2020-10-28T21:34:30Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
[[File:Studentflowchart.png | 500px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:517 Final project student flow chart.jpg]]&lt;br /&gt;
[[File:517 Final project instructor flow chart.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== UI Imporvements ===&lt;br /&gt;
&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb&lt;br /&gt;
&lt;br /&gt;
The UI can be improved for the conflict metric to give more information on the conflicted reviews.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
*Previous Final Video - [https://drive.google.com/drive/folders/1Z8rqRxdmXJYbOZzoptmBLP0kM7Bdul2Q Final Video]&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136066</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136066"/>
		<updated>2020-10-22T19:22:11Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
===Rspec Test added ===&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136065</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136065"/>
		<updated>2020-10-22T19:21:33Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Previous Flow charts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belongs to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136064</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136064"/>
		<updated>2020-10-22T19:21:17Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Previous Flow charts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
The Flow Charts below belong to [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865_ECE_517_2018]&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136063</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136063"/>
		<updated>2020-10-22T19:19:15Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Current UML Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |400px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136062</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136062"/>
		<updated>2020-10-22T19:18:57Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Current UML Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |600px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136061</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136061"/>
		<updated>2020-10-22T19:18:42Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Current UML Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif |1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136060</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136060"/>
		<updated>2020-10-22T19:18:29Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Current UML Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
==== Current UML Diagram ====&lt;br /&gt;
[[File:Uml.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136059</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136059"/>
		<updated>2020-10-22T19:17:55Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Current Logic Flow Charts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
==== Current Logic Flow Charts ====&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
=== Current UML Diagram ===&lt;br /&gt;
[[File:Uml.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136058</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136058"/>
		<updated>2020-10-22T19:16:11Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Previous Flow charts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
=== Current Logic Flow Charts ===&lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
[[File:Image flow 2.jpeg]]&lt;br /&gt;
&lt;br /&gt;
=== Current UML Diagram ===&lt;br /&gt;
[[File:Uml.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136057</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136057"/>
		<updated>2020-10-22T19:12:33Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Previous Flow charts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
Current logic that shows what causes a conflict email to be sent. &lt;br /&gt;
[[File:Studentflowchart.png |1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136056</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136056"/>
		<updated>2020-10-22T19:12:15Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Previous Flow charts ===&lt;br /&gt;
&lt;br /&gt;
Current logic that shows what causes a conflict email to be sent. &lt;br /&gt;
[[File:Studentflowchart.png]]&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136051</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136051"/>
		<updated>2020-10-22T19:08:09Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
test &amp;lt;ref&amp;gt; Hello&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
*Previous Wikipedia page -[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification E1865 Conflict Notification Fall 2018]&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136048</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136048"/>
		<updated>2020-10-22T19:04:42Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
File: spec/models/answer_spec.rb&lt;br /&gt;
&lt;br /&gt;
Currently, tests only check if the values are not empty. More tests can be written to make sure the actual value is being returned correctly.&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
More tests can be written to ensure correct names and values are written.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
Previous Wikipedia page -https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2018-_Project_E1865._Conflict_Notification &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136044</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136044"/>
		<updated>2020-10-22T18:57:11Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
&lt;br /&gt;
The previous team implemented new logic to determine if a review is in conflict with another and created a new page to link the instructors to in the email. Because their functionality was good, we will mainly be focused on improving the UI of the conflict reports. Furthermore, there is a lot of logic that lives in the views that can be refactored and moved to controllers. Additionally, there is debug code that can be removed and tests that can be fleshed out.&lt;br /&gt;
&lt;br /&gt;
=== Logic in Views ===&lt;br /&gt;
File: app/views/reports/_review_conflict_metric.html.erb &lt;br /&gt;
&lt;br /&gt;
The logic to determine if answers are within or outside of the tolerance limits can be moved to functions outside of the .erb file.&lt;br /&gt;
&lt;br /&gt;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136042</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136042"/>
		<updated>2020-10-22T18:55:03Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136041</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136041"/>
		<updated>2020-10-22T18:52:31Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Issues with previous submission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
# The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
# The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
# Tests need to be refactored.&lt;br /&gt;
# They included their debug code in their pull request. &lt;br /&gt;
# They have included a lot of logic in the views. &lt;br /&gt;
# Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136040</id>
		<title>CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2087._Conflict_notification._Improve_Search_Facility_In_Expertiza&amp;diff=136040"/>
		<updated>2020-10-22T18:48:47Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza includes the functionality of notifying instructors when a conflict occurs in review scores for a submission. Currently, when two reviews for the same submission differ significantly, an email is sent to the instructor of the course, but there is no link to the review that caused the conflict. This improvement will allow the professor to have links to the reviews that caused the conflict and will be formatted better to help the instructor understand the conflict.&lt;br /&gt;
&lt;br /&gt;
=== Issues with previous submission ===&lt;br /&gt;
&lt;br /&gt;
* The functionality is good but the UI of conflict report needs work. &lt;br /&gt;
* The UI needs to be cleaned up a little. When charts have only one or two bars, the chart can be compressed. The reviewer whose scores deviate from the threshold can be displayed in a different colored bar.&lt;br /&gt;
* Tests need to be refactored.&lt;br /&gt;
* They included their debug code in their pull request. &lt;br /&gt;
* They have included a lot of logic in the views. &lt;br /&gt;
* Shallow tests: one or more of their test expectations only focus on the return value not being `nil`, `empty` or not equal to `0` without testing the `real` value.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub - https://github.com/salmonandrew/expertiza &amp;lt;br&amp;gt;&lt;br /&gt;
Pull Request -  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Team ===&lt;br /&gt;
'''Mentor: '''Sanket Pai (sgpai2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
*Yen-An Jou (yjou@ncsu.edu)&lt;br /&gt;
*Xiwen Chen (xchen33@ncsu.edu)&lt;br /&gt;
*Andrew Hirasawa (achirasa@ncsu.edu)&lt;br /&gt;
*Derrick Li (xli56@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135448</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135448"/>
		<updated>2020-10-19T06:14:46Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the original code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. It will show if the student_task/list page has the assignment name( ''Assignment1684'' ) that we putted on the database. Also, since there are an assignment assigned to the student, we will expect page to have course table information (''eg. Assignment, Submission Grade, Topic, Current Stage, Stage Deadline, Publishing Rights'' ). Since the assignment was not being graded yet, on the submission Grade column it will show a &amp;lt;q&amp;gt;N/A&amp;lt;/q&amp;gt;. We are using student &amp;lt;q&amp;gt;student2064&amp;lt;/q&amp;gt; as our user. Therefore, the page should show &amp;lt;q&amp;gt;student2064&amp;lt;/q&amp;gt;. We also assigned the student to team up with CSC517, test ( ''student_id, user type. user type will be test #random number''), and on the page it should show &amp;lt;q&amp;gt;Students who have teamed with you CSC517, test#{n}&amp;lt;/q&amp;gt;. Next, the page should not contain other course name. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;student2064&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;CSC517, test&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;N/A&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;CSC 517 Fall 2010&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Next, we added a new file '''spec/features/student_task_spec.rb'''. We included spec/features/helpers/instructor_interface_helper.rb on the test file. instructor_interface_helper set up the instructor6 log in page for us already. However, instructor_interface_helper did not help us to sign up an assignment to the user. Therefore, we will testing if the user have not been signed up for an assignment, and the student_task/list page will only show the first div part. The course information table will not appear on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
describe &amp;quot;Student_task, list page&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Instructor login at student_task, list page&amp;quot; do&lt;br /&gt;
    it &amp;quot;has current contents&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/menu/student_task'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;badge&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
      expect(page). to have_content(&amp;quot;assignment&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135447</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135447"/>
		<updated>2020-10-19T06:03:52Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the original code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. It will show if the student_task/list page has the assignment name( ''Assignment1684'' ) that we putted on the database. Also, since there are an assignment assigned to the student, we will expect page to have course table information (''eg. Assignment, Submission Grade, Topic, Current Stage, Stage Deadline, Publishing Rights'' ). Since the assignment was not being graded yet, on the submission Grade column it will show a &amp;lt;q&amp;gt;N/A&amp;lt;/q&amp;gt;. We are using student &amp;lt;q&amp;gt;student2064&amp;lt;/q&amp;gt; as our user. Therefore, the page should show &amp;lt;q&amp;gt;student2064&amp;lt;/q&amp;gt;. We also assigned the student to team up with CSC517, test42 ( ''student_id, user type''), and on the page it should show &amp;lt;q&amp;gt;Students who have teamed with you CSC517, test42&amp;lt;/q&amp;gt;. Next, the page should not contain other course name. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;student2064&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;CSC517, test42&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;N/A&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;CSC 517 Fall 2010&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Next, we added a new file '''spec/features/student_task_spec.rb'''. We included spec/features/helpers/instructor_interface_helper.rb on the test file. instructor_interface_helper set up the instructor6 log in page for us already. However, instructor_interface_helper did not help us to sign up an assignment to the user. Therefore, we will testing if the user have not been signed up for an assignment, and the student_task/list page will only show the first div part. The course information table will not appear on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
describe &amp;quot;Student_task, list page&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Instructor login at student_task, list page&amp;quot; do&lt;br /&gt;
    it &amp;quot;has current contents&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/menu/student_task'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;badge&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
      expect(page). to have_content(&amp;quot;assignment&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135442</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135442"/>
		<updated>2020-10-19T05:42:00Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the original code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. It will show if the student_task/list page has the assignment name( ''Assignment1684'' ) that we putted on the database. Also, since there are an assignment assigned to the student, we will expect page to have course table information (''eg. Assignment, Submission Grade, Topic, Current Stage, Stage Deadline, Publishing Rights'' ). Since the assignment was not being graded yet, on the submission Grade column it will show a &amp;lt;q&amp;gt;N/A&amp;lt;/q&amp;gt;. We also did not put this assignment inside of a course. Therefore, on the course table head, it will show &amp;lt;q&amp;gt; No Course Assigned Yet &amp;lt;/q&amp;gt;. Next, the page should not contain other course name. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;No Course Assigned Yet&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;N/A&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;CSC 517 Fall 2010&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Next, we added a new file '''spec/features/student_task_spec.rb'''. We included spec/features/helpers/instructor_interface_helper.rb on the test file. instructor_interface_helper set up the instructor6 log in page for us already. However, instructor_interface_helper did not help us to sign up an assignment to the user. Therefore, we will testing if the user have not been signed up for an assignment, and the student_task/list page will only show the first div part. The course information table will not appear on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
describe &amp;quot;Student_task, list page&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Instructor login at student_task, list page&amp;quot; do&lt;br /&gt;
    it &amp;quot;has current contents&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/menu/student_task'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;badge&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
      expect(page). to have_content(&amp;quot;assignment&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135441</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135441"/>
		<updated>2020-10-19T05:21:29Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the original code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Next, we added a new file '''spec/features/student_task_spec.rb'''. We included spec/features/helpers/instructor_interface_helper.rb on the test file. instructor_interface_helper set up the instructor6 log in page for us already. However, instructor_interface_helper did not help us to sign up an assignment to the user. Therefore, we will testing if the user have not been signed up for an assignment, and the student_task/list page will only show the first div part. The course information table will not appear on the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include InstructorInterfaceHelperSpec&lt;br /&gt;
&lt;br /&gt;
describe &amp;quot;Student_task, list page&amp;quot; do&lt;br /&gt;
  before(:each) do&lt;br /&gt;
    assignment_setup&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe &amp;quot;Instructor login at student_task, list page&amp;quot; do&lt;br /&gt;
    it &amp;quot;has current contents&amp;quot; do&lt;br /&gt;
      login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
      visit '/menu/student_task'&lt;br /&gt;
      expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;badge&amp;quot;)&lt;br /&gt;
      expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
      expect(page). to have_content(&amp;quot;assignment&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135440</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135440"/>
		<updated>2020-10-19T05:06:52Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Problems that need to be fixed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the original code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135439</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135439"/>
		<updated>2020-10-19T05:04:55Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Problem 2, submission grade display */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the original code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135438</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135438"/>
		<updated>2020-10-19T05:03:23Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Travis CI Passing Screenshot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG |1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135437</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135437"/>
		<updated>2020-10-19T05:03:03Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Travis CI Passing Screenshot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
[[File:TravisCI.JPG]]&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TravisCI.JPG&amp;diff=135436</id>
		<title>File:TravisCI.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TravisCI.JPG&amp;diff=135436"/>
		<updated>2020-10-19T05:02:34Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135435</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135435"/>
		<updated>2020-10-19T05:01:51Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
*Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135434</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135434"/>
		<updated>2020-10-19T05:01:08Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
:- The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:- Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135433</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135433"/>
		<updated>2020-10-19T04:56:46Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
**The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135432</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135432"/>
		<updated>2020-10-19T04:54:46Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
*First, we modified '''spec/features/airbrake_expection_errors_feature_tests_spec.rb'''. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Second, we modified '''spec/features/assignment_submission_spec.rb'''. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for testing needed, and test the necessary function from the student_task/list page.&lt;br /&gt;
&lt;br /&gt;
The def function we added is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  def list_page&lt;br /&gt;
    user = User.find_by(name: &amp;quot;student2064&amp;quot;)&lt;br /&gt;
    login_as(user.name)&lt;br /&gt;
    stub_current_user(user, user.role.name, user.role)&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
    visit '/sign_up_sheet/sign_up?id=1&amp;amp;topic_id=1' # signup topic&lt;br /&gt;
    visit '/student_task/list'&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Later on, we will use this list_page function on our test cases. Testing code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#test for student_task/list page to have the right content&lt;br /&gt;
  it &amp;quot;have the right content&amp;quot; do&lt;br /&gt;
    list_page&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignments&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;badges&amp;quot;)&lt;br /&gt;
    expect(page).to have_no_content(&amp;quot;Review Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Submission Grade&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Topic&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Current Stage&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Stage Deadline&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Publishing Rights&amp;quot;)&lt;br /&gt;
    expect(page).to have_content(&amp;quot;Assignment1684&amp;quot;)&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Travis CI Passing Screenshot'''===&lt;br /&gt;
Our Rspec test is able to pass Travis CI testing.&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135373</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135373"/>
		<updated>2020-10-19T00:30:28Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* RSpec test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
Fixing spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
First, we modified spec/features/airbrake_expection_errors_feature_tests_spec.rb. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Second, we modified spec/features/assignment_submission_spec.rb. In order to use the content inside of the original test file, we added a def function. The function is able to set up the database for test needed, and bring us to the&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135372</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135372"/>
		<updated>2020-10-19T00:23:53Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Deployment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
First, we modified spec/features/airbrake_expection_errors_feature_tests_spec.rb. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.7.98.249:8080/ E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.7.98.249:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135370</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135370"/>
		<updated>2020-10-19T00:19:15Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
First, we modified spec/features/airbrake_expection_errors_feature_tests_spec.rb. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.46.19.28:8080 E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.46.19.28:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135369</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135369"/>
		<updated>2020-10-19T00:17:49Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Files Involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/assignment_submission_spec.rb&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
First, we modified spec/features/airbrake_expection_errors_feature_tests_spec.rb. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.46.19.28:8080 E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.46.19.28:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135309</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135309"/>
		<updated>2020-10-17T01:10:53Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Problem 2, submission grade display */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
First, we modified spec/features/airbrake_expection_errors_feature_tests_spec.rb. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.46.19.28:8080 E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.46.19.28:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135308</id>
		<title>CSC/ECE 517 Fall 2020 - E2065. Fix view in student task/list page</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2065._Fix_view_in_student_task/list_page&amp;diff=135308"/>
		<updated>2020-10-17T01:10:34Z</updated>

		<summary type="html">&lt;p&gt;Xchen33: /* Problem 2, submission grade display */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
=='''Team Members'''==&lt;br /&gt;
*Junyan Li	jli56@ncsu.edu	&lt;br /&gt;
&lt;br /&gt;
*Ruoyun	Ma      rma9@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*Xiwen Chen	xchen33@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
*'''Mentor''': Saurabh Shingte (svshingt@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
==='''Background'''===&lt;br /&gt;
&lt;br /&gt;
The student_task/list page is the page displayed to a student after logging in into expertiza. &lt;br /&gt;
&lt;br /&gt;
It has mainly two div(s), one to show the upcoming tasks including 2 parts:&lt;br /&gt;
&lt;br /&gt;
* Information about tasks. It shows the projects that need to be completed and how long they are close to the deadline, and marks specific revisions prompts.&lt;br /&gt;
&lt;br /&gt;
* Show the record of each group collaborator(s) for each course.&lt;br /&gt;
&lt;br /&gt;
Another div is to display all the assignments and their information, include Assignment, Course, Topic,	Current Stage,	Review Grade, Badges, Stage Deadline, Copyright Grants and Make Public.&lt;br /&gt;
&lt;br /&gt;
Original page before modifying showing below, all the courses and all the assignments are displaying in the same table, and badges have own column. &lt;br /&gt;
&lt;br /&gt;
[[File:Orignal.JPG|1000px]]&lt;br /&gt;
[[File:Originalcourse.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''Files Involved'''===&lt;br /&gt;
&lt;br /&gt;
*app/helpers/student_task_helper.rb &lt;br /&gt;
&lt;br /&gt;
*app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
*spec/features/airbrake_expection_errors_feature_tests_spec.rb&lt;br /&gt;
&lt;br /&gt;
*spec/features/student_task_spec.rb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Problems that need to be fixed'''===&lt;br /&gt;
&lt;br /&gt;
Here are some existing problems and unclear parts of the page：&lt;br /&gt;
&lt;br /&gt;
*'''Problem1''': Consider the cases where a student might be enrolled in assignments from more than one course. In this case, assignments should be grouped by course, with the course name given before the listing of the first assignment.&lt;br /&gt;
&lt;br /&gt;
*'''Problem2''': Remove the column for Review Grade because it makes no sense, change Review Grade to Submission Grade. Show the actual score and show the blue button. If you hover over your mouse at the blue button, should also show the commands about grades.&lt;br /&gt;
&lt;br /&gt;
*'''Problem3''': Delete the badges column, and if the Assignment has a badge, mark it directly next to the assignment name under the assignment column.&lt;br /&gt;
&lt;br /&gt;
*'''Problem4''': There is an unnecessary gap between the two div. It needs to be rearranged to be more beautiful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Solutions'''==&lt;br /&gt;
==='''Problem 1, group the course and display on different tables'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
original code of how to display course are showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;table class=&amp;quot;table table-striped&amp;quot; cellpadding=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;taskheader&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Assignment&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Course&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Topic&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Current Stage&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Badges&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Stage Deadline &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title=&amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;/&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
      &amp;lt;th&amp;gt;Publishing Rights&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;% @student_tasks.each do |student_task| %&amp;gt;&lt;br /&gt;
      &amp;lt;% participant = student_task.participant %&amp;gt;&lt;br /&gt;
      &amp;lt;% if student_task.assignment %&amp;gt;&lt;br /&gt;
        &amp;lt;tr class=&amp;quot;listingRow&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--course--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.course.try :name %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--topic--&amp;gt;&lt;br /&gt;
          &amp;lt;% topic_id = SignedUpTeam.topic_id(participant.parent_id, participant.user_id) %&amp;gt;&lt;br /&gt;
          &amp;lt;% if SignUpTopic.exists?(topic_id) %&amp;gt;&lt;br /&gt;
            &amp;lt;td&amp;gt;&amp;lt;%= SignUpTopic.find(topic_id).try :topic_name %&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;/td&amp;gt;&lt;br /&gt;
          &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;!--current stage--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&lt;br /&gt;
          &amp;lt;% if participant.assignment.link_for_current_stage(topic_id)!= nil &amp;amp;&amp;amp; participant.assignment.link_for_current_stage(topic_id).length!=0%&amp;gt;&lt;br /&gt;
              &amp;lt;%= link_to participant.assignment.current_stage_name(topic_id), participant.assignment.link_for_current_stage(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% else %&amp;gt;&lt;br /&gt;
              &amp;lt;%= participant.assignment.current_stage_name(topic_id) %&amp;gt;&lt;br /&gt;
              &amp;lt;% end %&amp;gt;&lt;br /&gt;
          &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--review grade--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_review_grade_info(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--badges--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--stage deadline--&amp;gt;&lt;br /&gt;
          &amp;lt;td&amp;gt;&amp;lt;%= student_task.stage_deadline.in_time_zone(session[:user].timezonepref) %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;!--publish rights--&amp;gt;&lt;br /&gt;
          &amp;lt;td align=center&amp;gt;&amp;lt;%= participant.permission_granted ? &amp;quot;granted&amp;quot; : &amp;quot;denied&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
      &amp;lt;% end %&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to group the courses, we added a group_by method to find out which courses does this assignment belongs to, and group the assignments that has the same courses name at one table. The modified code is showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;% group = @student_tasks.group_by(&amp;amp;:course).each do | course, student_tasks|%&amp;gt;&lt;br /&gt;
    &amp;lt;% if course%&amp;gt;&lt;br /&gt;
    &amp;lt;%end %&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--      &amp;lt;print the courses name on top of the tables&amp;gt;--&amp;gt;&lt;br /&gt;
      &amp;lt;% if !student_tasks.first.course %&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;No Course Assigned Yet&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&amp;lt;%=student_tasks.first.course.try :name %&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We will print out the course name as each table head, group the assignments, and we take down Course coloum from table content since the course name is already showing as table head. Also, for the assignments that have not assigned to a course, we will print out &amp;lt;q&amp;gt;No Course Assigned Yet&amp;lt;/q&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==='''Problem 2, submission grade display'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb&lt;br /&gt;
app/helpers/student_task_helper.rb&lt;br /&gt;
&lt;br /&gt;
For this problem, first, we change Review Grade to Submission grade, which only need to modify&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Review Grade&amp;lt;/th&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Submission Grade&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
on list.html.erb.&lt;br /&gt;
&lt;br /&gt;
Second, we change how we display the score. Instead of showing a blue button, we added how much scores they got (e.g. 32/40), which make users easier to see what scores they got. We modified get_review_grade_info(participant) function inside of student_task_helper.rb.&lt;br /&gt;
&lt;br /&gt;
Original code is showing below&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/100\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    result.html_safe&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the orignal code, each grade is assigned to /100, which is not correct because not every assignment has 10 reviews (one review count for 10 point). Instead of using /100, we use num_reviews_allowed, it will give us the maximum reviews that each assignments are allowed. Since we need to display the current score on the page, we need an array to carry the current score and display it on the result. The modified code showing below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 def get_review_grade_info(participant)&lt;br /&gt;
    info = ''&lt;br /&gt;
    if participant.try(:review_grade).try(:grade_for_reviewer).nil? ||&lt;br /&gt;
       participant.try(:review_grade).try(:comment_for_reviewer).nil?&lt;br /&gt;
      result = &amp;quot;N/A&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      score = participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s&lt;br /&gt;
      info = &amp;quot;Score: &amp;quot; + participant.try(:review_grade).try(:grade_for_reviewer).to_s + &amp;quot;/&amp;quot; + (participant.assignment.num_reviews_allowed*10).to_s + &amp;quot;\n&amp;quot;&lt;br /&gt;
      info += &amp;quot;Comment: &amp;quot; + participant.try(:review_grade).try(:comment_for_reviewer).to_s&lt;br /&gt;
      info = truncate(info, length: 1500, omission: '...')&lt;br /&gt;
      result = score + &amp;quot;&amp;lt;img src = '/assets/info.png' title = '&amp;quot; + info + &amp;quot;'&amp;gt;&amp;quot;&lt;br /&gt;
    end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 3, badges showing location fixing'''===&lt;br /&gt;
&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
&lt;br /&gt;
Since not too many assignments are able to get badges, that make badges column barely have contents. Therefore, we display it after the assignment name and delete Badges coloum. If one student gets a badge, it will display a small picture after the badged assignment. Hover over your mouse on it, and it will display the information about this badge.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!--assignment--&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;%= link_to student_task.assignment.name, :action =&amp;gt; 'view', :id =&amp;gt; participant %&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;%= get_awarded_badges(participant) %&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Problem 4, unnecessary white space'''===&lt;br /&gt;
Fixing app/views/student_task/list.html.erb &lt;br /&gt;
Our main purpose of this project is to make the student_task/list page looks better. For problem 4, we fixed unnecessary white space between two divs. We changed two div's style to style = &amp;lt;q&amp;gt;width:18&amp;lt;/q&amp;gt; and style = &amp;lt;q&amp;gt;width:80&amp;lt;/q&amp;gt;, so two div will display on the same lines.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;taskbox&amp;quot; style=&amp;quot;width:18%; display: inline-block; float:left; margin-right: 10px;&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;topictable&amp;quot; style=&amp;quot;float: right;width: 80%;margin-bottom: 10px; display: inline-block; border: 1px solid #000000&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
&lt;br /&gt;
==='''Page Change Display'''===&lt;br /&gt;
&lt;br /&gt;
Page showing right now&lt;br /&gt;
[[File:Coursedisplay.PNG|1000px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Differentgroup.JPG|1000px]]&lt;br /&gt;
&lt;br /&gt;
==='''RSpec test'''===&lt;br /&gt;
According to the modification of each problem, we write test separately to test whether its function is realized or not.&lt;br /&gt;
&lt;br /&gt;
First, we modified spec/features/airbrake_expection_errors_feature_tests_spec.rb. Since when no assignment was assigned to the student, it should not show the table content on the page. Change from&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).to have_content('Review Grade')&lt;br /&gt;
    expect(page).to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  it &amp;quot;can access to '/student_task/list' after login as a student&amp;quot; do&lt;br /&gt;
    stu = create(:student)&lt;br /&gt;
    login_as stu.name&lt;br /&gt;
    visit '/tree_display/list'&lt;br /&gt;
    expect(page).to have_current_path('/student_task/list')&lt;br /&gt;
    expect(page).to have_content('Assignments')&lt;br /&gt;
    expect(page).to have_content('Tasks not yet started')&lt;br /&gt;
    expect(page).to have_content('Students who have teamed with you')&lt;br /&gt;
    expect(page).not_to have_content('Review Grade')&lt;br /&gt;
    expect(page).not_to have_content('Publishing Rights')&lt;br /&gt;
    expect(page).not_to have_content('Welcome!')&lt;br /&gt;
    expect(page).not_to have_content('User Name')&lt;br /&gt;
    expect(page).not_to have_content('Password')&lt;br /&gt;
    expect(page).not_to have_content('SIGN IN')&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Deployment'''===&lt;br /&gt;
&lt;br /&gt;
We deploy this part of the program on VCL to test UI and other functions. The link to the website is as follows:&lt;br /&gt;
[http://152.46.19.28:8080 E2065 Repo Link]&lt;br /&gt;
&lt;br /&gt;
Using the following account to log in for testing：&lt;br /&gt;
&lt;br /&gt;
Username: instructor6&lt;br /&gt;
&lt;br /&gt;
Password: password&lt;br /&gt;
&lt;br /&gt;
And then click [http://152.46.19.28:8080/student_task/list 'Assignments'] to the fixed page.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
*[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
*[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
*[http://research.csc.ncsu.edu/efg/expertiza Expertiza project Details]&lt;br /&gt;
*[https://www.youtube.com/channel/UCdKXzox7hrWjfOMML6FzTWg Expertiza YouTube Channel]&lt;/div&gt;</summary>
		<author><name>Xchen33</name></author>
	</entry>
</feed>