<?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=Achirasa</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=Achirasa"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Achirasa"/>
	<updated>2026-10-09T06:15:56Z</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=137180</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=137180"/>
		<updated>2020-11-17T04:35:02Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Improved Tests */&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;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
Added additional tests to cover the average and standard deviation calculations.&lt;br /&gt;
&lt;br /&gt;
File: spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  describe '#average_of_round' do&lt;br /&gt;
&lt;br /&gt;
    it 'should return correct average' do&lt;br /&gt;
      question_answer = {'a'=&amp;gt; 1, 'b'=&amp;gt;2, 'c'=&amp;gt;3} &lt;br /&gt;
      expect(helper.average_of_round(question_answer)).to eq(2)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe '#std_of_round' do&lt;br /&gt;
&lt;br /&gt;
    it 'should return correct standard deviation' do&lt;br /&gt;
      question_answer = {'a'=&amp;gt; 1, 'b'=&amp;gt;2, 'c'=&amp;gt;3} &lt;br /&gt;
      expect(helper.std_of_round(2, question_answer)).to eq(0.82)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Improved tests for conflict report controller. Tests now check for correct values rather than just null or empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    describe '#review_conflict_response_map' do&lt;br /&gt;
    context 'when type is ReviewConflictResponseMap' do&lt;br /&gt;
      it 'renders response_report page with corresponding data' do&lt;br /&gt;
        allow(Team).to receive(:where).with(parent_id: '1').and_return([test]).ordered&lt;br /&gt;
        params = {&lt;br /&gt;
            id: 1,&lt;br /&gt;
            report: {type: 'ReviewConflictResponseMap'},&lt;br /&gt;
            user: 'no one'&lt;br /&gt;
        }&lt;br /&gt;
        get :response_report, params&lt;br /&gt;
        expect(response).to render_template(:response_report)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe 'reviewers_name_id_by_reviewee_and_assignment' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      @assignment_id = 1&lt;br /&gt;
      @reviewee_id = 1&lt;br /&gt;
    end&lt;br /&gt;
    it 'returns reviewers name from Answer by reviewee and assignment id from db which is not empty' do&lt;br /&gt;
      allow(User).to receive(:where).with(@reviewee_id, @assignment_id).and_return([user1])&lt;br /&gt;
      expect(User.where(@reviewee_id, @assignment_id)).to eq([user1])&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&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 - 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>Achirasa</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=137179</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=137179"/>
		<updated>2020-11-17T04:34:03Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Improved Tests */&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;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
Added additional tests to cover the average and standard deviation calculations.&lt;br /&gt;
&lt;br /&gt;
File: spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  describe '#average_of_round' do&lt;br /&gt;
&lt;br /&gt;
    it 'should return correct average' do&lt;br /&gt;
      question_answer = {'a'=&amp;gt; 1, 'b'=&amp;gt;2, 'c'=&amp;gt;3} &lt;br /&gt;
      expect(helper.average_of_round(question_answer)).to eq(2)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe '#std_of_round' do&lt;br /&gt;
&lt;br /&gt;
    it 'should return correct standard deviation' do&lt;br /&gt;
      question_answer = {'a'=&amp;gt; 1, 'b'=&amp;gt;2, 'c'=&amp;gt;3} &lt;br /&gt;
      expect(helper.std_of_round(2, question_answer)).to eq(0.82)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: spec/controllers/reports_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Improved tests for conflict report controller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    describe '#review_conflict_response_map' do&lt;br /&gt;
    context 'when type is ReviewConflictResponseMap' do&lt;br /&gt;
      it 'renders response_report page with corresponding data' do&lt;br /&gt;
        allow(Team).to receive(:where).with(parent_id: '1').and_return([test]).ordered&lt;br /&gt;
        params = {&lt;br /&gt;
            id: 1,&lt;br /&gt;
            report: {type: 'ReviewConflictResponseMap'},&lt;br /&gt;
            user: 'no one'&lt;br /&gt;
        }&lt;br /&gt;
        get :response_report, params&lt;br /&gt;
        expect(response).to render_template(:response_report)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe 'reviewers_name_id_by_reviewee_and_assignment' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      @assignment_id = 1&lt;br /&gt;
      @reviewee_id = 1&lt;br /&gt;
    end&lt;br /&gt;
    it 'returns reviewers name from Answer by reviewee and assignment id from db which is not empty' do&lt;br /&gt;
      allow(User).to receive(:where).with(@reviewee_id, @assignment_id).and_return([user1])&lt;br /&gt;
      expect(User.where(@reviewee_id, @assignment_id)).to eq([user1])&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&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 - 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>Achirasa</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=137178</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=137178"/>
		<updated>2020-11-17T04:31:39Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Implemented Solution */&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;
=== Improved Tests ===&lt;br /&gt;
&lt;br /&gt;
Added additional tests to cover the average and standard deviation calculations.&lt;br /&gt;
&lt;br /&gt;
File: spec/helpers/review_mapping_helper_spec.rb&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  describe '#average_of_round' do&lt;br /&gt;
&lt;br /&gt;
    it 'should return correct average' do&lt;br /&gt;
      question_answer = {'a'=&amp;gt; 1, 'b'=&amp;gt;2, 'c'=&amp;gt;3} &lt;br /&gt;
      expect(helper.average_of_round(question_answer)).to eq(2)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  describe '#std_of_round' do&lt;br /&gt;
&lt;br /&gt;
    it 'should return correct standard deviation' do&lt;br /&gt;
      question_answer = {'a'=&amp;gt; 1, 'b'=&amp;gt;2, 'c'=&amp;gt;3} &lt;br /&gt;
      expect(helper.std_of_round(2, question_answer)).to eq(0.82)&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&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 - 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>Achirasa</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=137172</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=137172"/>
		<updated>2020-11-17T04:08:05Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* UI 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;
== 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;
[[File:E2087 Score Report.png|1000px]]&lt;br /&gt;
[[File:E2087 Conflict Notification.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;
== 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>Achirasa</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=137170</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=137170"/>
		<updated>2020-11-17T04:04:05Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* UI 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;
== 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;
[[File:E2087 Score Report.png|1000px]]&lt;br /&gt;
[[File:E2087 Conflict Notification.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;
== 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; @response.notify_instructor_on_difference(request.base_url)&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;
[[File:Chart before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
UI 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;
UI after improvements.&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>Achirasa</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=137169</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=137169"/>
		<updated>2020-11-17T04:03:37Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* UI 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;
== 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;
[[File:E2087 Score Report.png|1000px]]&lt;br /&gt;
[[File:E2087 Conflict Notification.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;
== 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; @response.notify_instructor_on_difference(request.base_url)&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;
[[File:Chart before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
UI 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;
UI after improvements.&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>Achirasa</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=137168</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=137168"/>
		<updated>2020-11-17T04:03:14Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* UI 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;
== 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;
[[File:E2087 Score Report.png|1000px]]&lt;br /&gt;
[[File:E2087 Conflict Notification.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;
== 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; @response.notify_instructor_on_difference(request.base_url)&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;
[[File:Chart before.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
UI before improvements.&lt;br /&gt;
&lt;br /&gt;
[[File:Chart after.png|1000px]]&lt;br /&gt;
&lt;br /&gt;
UI after improvements.&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>Achirasa</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=137167</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=137167"/>
		<updated>2020-11-17T04:02:44Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Implemented Solution */&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;
[[File:E2087 Score Report.png|1000px]]&lt;br /&gt;
[[File:E2087 Conflict Notification.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;
== 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; @response.notify_instructor_on_difference(request.base_url)&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;
[[File:Chart before.png|1000px]]&lt;br /&gt;
[[File:Chart after.png|1000px]]&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>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Chart_after.png&amp;diff=137166</id>
		<title>File:Chart after.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Chart_after.png&amp;diff=137166"/>
		<updated>2020-11-17T04:00:42Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: Conflict chart after&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Conflict chart after&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Chart_before.png&amp;diff=137165</id>
		<title>File:Chart before.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Chart_before.png&amp;diff=137165"/>
		<updated>2020-11-17T04:00:21Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: conflict chart before&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;conflict chart before&lt;/div&gt;</summary>
		<author><name>Achirasa</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=137159</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=137159"/>
		<updated>2020-11-17T03:13:40Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
== 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;
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; @response.notify_instructor_on_difference(request.base_url)&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 which is out of acceptable 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;
&amp;lt;pre&amp;gt;backgroundColor: colors&amp;lt;/pre&amp;gt;&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;
== 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>Achirasa</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=136819</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=136819"/>
		<updated>2020-11-15T02:32:47Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Implemented Solution */&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;
== 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>Achirasa</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=136818</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=136818"/>
		<updated>2020-11-15T02:18:55Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
=== 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;
== 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>Achirasa</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=136817</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=136817"/>
		<updated>2020-11-15T02:18:09Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &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;
== 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>Achirasa</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=136436</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=136436"/>
		<updated>2020-10-28T22:31:33Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &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;
== 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>Achirasa</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=136435</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=136435"/>
		<updated>2020-10-28T22:30:54Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Functionality 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;
== 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;
== 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>Achirasa</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=136434</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=136434"/>
		<updated>2020-10-28T22:28:31Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &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;
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;
== 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>Achirasa</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=136433</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=136433"/>
		<updated>2020-10-28T22:27:02Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
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;
===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>Achirasa</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=136432</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=136432"/>
		<updated>2020-10-28T22:23:03Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
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;
== 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>Achirasa</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=136422</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=136422"/>
		<updated>2020-10-28T21:58:04Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
=== 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;
== Functionality Changes ==&lt;br /&gt;
&lt;br /&gt;
== UI Changes ==&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>Achirasa</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=136067</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=136067"/>
		<updated>2020-10-22T19:29:21Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Proposed Solution */&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;
=== 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;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136053</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=136053"/>
		<updated>2020-10-22T19:09:39Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
=== 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>Achirasa</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=136052</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=136052"/>
		<updated>2020-10-22T19:09:29Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
=== 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>Achirasa</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=136050</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=136050"/>
		<updated>2020-10-22T19:07:07Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
=== 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 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136049</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=136049"/>
		<updated>2020-10-22T19:06:51Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136047</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=136047"/>
		<updated>2020-10-22T19:02:19Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &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;/div&gt;</summary>
		<author><name>Achirasa</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=136046</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=136046"/>
		<updated>2020-10-22T19:01:45Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Improved Tests */&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;/div&gt;</summary>
		<author><name>Achirasa</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=136045</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=136045"/>
		<updated>2020-10-22T18:59:39Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Proposed Solution */&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;
== 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>Achirasa</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=136043</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=136043"/>
		<updated>2020-10-22T18:56:13Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Proposed Solution */&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;
== 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>Achirasa</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=136036</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=136036"/>
		<updated>2020-10-22T18:39:14Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
== Test ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136035</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=136035"/>
		<updated>2020-10-22T18:38:26Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &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;
== Proposed Solution ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136034</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=136034"/>
		<updated>2020-10-22T18:37:32Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* 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;
== Proposed Solution ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136033</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=136033"/>
		<updated>2020-10-22T18:31:03Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
test&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;
== Test ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136032</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=136032"/>
		<updated>2020-10-22T18:30:54Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Test ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136031</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=136031"/>
		<updated>2020-10-22T18:29:02Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Proposed Solution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;br /&gt;
test&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136030</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=136030"/>
		<updated>2020-10-22T18:28:54Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
test&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136029</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=136029"/>
		<updated>2020-10-22T18:28:43Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
== Proposed Solution ==&lt;/div&gt;</summary>
		<author><name>Achirasa</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=136028</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=136028"/>
		<updated>2020-10-22T18:28:31Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: Created page with &amp;quot;== Introduction ==&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020&amp;diff=136027</id>
		<title>CSC/ECE 517 Fall 2020</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020&amp;diff=136027"/>
		<updated>2020-10-22T18:28:20Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Final Project Design Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Writing Assignments ==&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2070. Refactor response_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2068. Refactor quiz_questionnaires_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2062. Add test cases to review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2063. Refactor tree-display.js and tree_display_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2064. Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2065. Fix view in student_task/list page]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2066. Refactor lottery controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2067. Refactor student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2073. Refactor course_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2057. Restrict TAs’ ability to change their own grade and limit file-size upload]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2052. Remove multiple topics at a time]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2052. Remove multiple topics at a time]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2056 Account_Request_Controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2059. Email notification to reviewers and instructors.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2058. Two issues related to assignment management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2071. Improve assessment360_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2054. Auto generate submission directory names based on assignment names]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2060. Review report should link to the usual view for reviews]]&lt;br /&gt;
&lt;br /&gt;
== Final Project Design Documents == &lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2082. Track time between successive tag assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2078. Improve self-review  Link peer review &amp;amp; self-review to derive grades]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2083. Revision_planning_tool_E2016]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2085. Allow reviewers to bid on what to review]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2086. Let course staff as well as students do reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - SQLFE. Refactor Submission.java]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2075. calibration submissions should be copied along with calibration assignments]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2076. Allow users to create an account and submit work to an &amp;quot;assignment&amp;quot; (e.g., for conference reviewing)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2080. Track the time students look at other submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2079. Improve Search Facility In Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2020 - E2087. Conflict notification. Improve Search Facility In Expertiza]]&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135070</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135070"/>
		<updated>2020-10-14T01:00:23Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza GitHub Repo]&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135069</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135069"/>
		<updated>2020-10-14T01:00:01Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Repository ==&lt;br /&gt;
[https://github.com/salmonandrew/expertiza Repository]&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135067</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135067"/>
		<updated>2020-10-14T00:58:20Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Project Mentor:'''&lt;br /&gt;
&amp;lt;br&amp;gt;Dr. Gehringer&lt;br /&gt;
&lt;br /&gt;
'''Project Members:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Javier Sanchez&amp;lt;br&amp;gt;&lt;br /&gt;
Jack Macdonald&amp;lt;br&amp;gt;&lt;br /&gt;
Andrew Hirasawa&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135066</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135066"/>
		<updated>2020-10-14T00:55:59Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
Before navigating to aggregated teammate and meta reviews, a dialog shows to allow the user select which columns they would like to see.&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, before navigating to course grade summary, another dialog shows to allow the user select their columns.&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135065</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135065"/>
		<updated>2020-10-14T00:54:28Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Aggregated_teammate_meta_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Course_grade_summary.png]]&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Aggregated_teammate_meta_reviews.png&amp;diff=135064</id>
		<title>File:Aggregated teammate meta reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Aggregated_teammate_meta_reviews.png&amp;diff=135064"/>
		<updated>2020-10-14T00:53:50Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course_grade_summary.png&amp;diff=135063</id>
		<title>File:Course grade summary.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course_grade_summary.png&amp;diff=135063"/>
		<updated>2020-10-14T00:53:31Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135062</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135062"/>
		<updated>2020-10-14T00:51:53Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
[[File:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135061</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135061"/>
		<updated>2020-10-14T00:50:15Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135060</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135060"/>
		<updated>2020-10-14T00:48:59Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135059</id>
		<title>CSC/ECE 517 Fall 2020 - E2071. Improve assessment360 controller.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2020_-_E2071._Improve_assessment360_controller.rb&amp;diff=135059"/>
		<updated>2020-10-14T00:48:49Z</updated>

		<summary type="html">&lt;p&gt;Achirasa: /* Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of E2071. Improve assessment360 controller.&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The Expertiza project is software to create reusable learning objects through peer review. It also supports team projects, and the submission of almost any document type, including URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
=='''Problem Statement'''==&lt;br /&gt;
As an instructor, you are able to view tables with information on student performance across the various courses they are taking and their assignments. Currently, these tables always show the same information and you are not able to specify if you only want to see certain data. Furthermore, the source code has some variables names that are not clear to what their purpose is in the code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===To fix the problem:===&lt;br /&gt;
1.There should be a dialog that appears before navigating to the pages where the table views are that contain a list of checkboxes to allow the user to choose which columns they would like to see.&lt;br /&gt;
====Course Grade Summary====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Instructor Assigned Scores&lt;br /&gt;
*Peer Grades&lt;br /&gt;
*Topics&lt;br /&gt;
====View Aggregated Teammates and Meta Reviews====&lt;br /&gt;
Selectable columns:&lt;br /&gt;
*Teammate Review Scores&lt;br /&gt;
*Meta Review Scores&lt;br /&gt;
*Number Of Teammates&lt;br /&gt;
&lt;br /&gt;
=='''Solution'''==&lt;br /&gt;
&lt;br /&gt;
===1.Modify View===&lt;br /&gt;
File: app/views/tree_display/_dialog.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is a ruby view partial that contains the html for the checkbox dialogs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog_course_summary&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/course_student_grade_summary', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('InstructorAssignedScores', &amp;quot;Instuctor Assigned Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'InstructorAssignedScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('PeerGrades', &amp;quot;Peer Grades&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'PeerGrades'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('Topics', &amp;quot;Topics&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'Topics'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag('course_id', '', :id =&amp;gt; 'course_summary_course_id')%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeCourseSummaryDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;dialog&amp;quot; title=&amp;quot;Select Columns&amp;quot; hidden=&amp;quot;true&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;%= form_tag('/assessment360/all_students_all_reviews', method: :get) do %&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('TeammateReviewScores', &amp;quot;Teammate Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'TeammateReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('MetaReviewScores', &amp;quot;Meta-Review Scores&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'MetaReviewScores'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;form-group row&amp;quot; style=&amp;quot;margin-bottom: 0px !important;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;%= label_tag('NumberOfTeammates', &amp;quot;Number Of Teammates&amp;quot;) %&amp;gt;&lt;br /&gt;
            &amp;lt;%= check_box_tag 'fields[]', 'NumberOfTeammates'%&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;%= hidden_field_tag 'course_id'%&amp;gt;&lt;br /&gt;
        &amp;lt;%= submit_tag(&amp;quot;Submit&amp;quot;) %&amp;gt;&lt;br /&gt;
        &amp;lt;button type=&amp;quot;button&amp;quot; id='closeDialog'&amp;gt;Close&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/assets/javascripts/tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
Added functions to toggle dialog.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  if (document.getElementById('closeDialog')) {&lt;br /&gt;
    document.getElementById('closeDialog').onclick = () =&amp;gt; {jQuery('#dialog').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
  if (document.getElementById('closeCourseSummaryDialog')) {&lt;br /&gt;
    document.getElementById('closeCourseSummaryDialog').onclick = () =&amp;gt; {jQuery('#dialog_course_summary').dialog('close')};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   toggleModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
   toggleCourseSummaryModal: function() {&lt;br /&gt;
     jQuery( &amp;quot;#dialog_course_summary&amp;quot; ).dialog();&lt;br /&gt;
     document.getElementById('course_summary_course_id').value = parseInt(this.props.id/2).toString();&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Added buttons to replace links that trigged dialog popups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View grade summary by student&amp;quot; onClick={this.toggleCourseSummaryModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;/assets/tree_view/360-dashboard-24.png&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;button title=&amp;quot;View aggregated teammate &amp;amp; meta reviews&amp;quot; onClick={this.toggleModal} &lt;br /&gt;
style={{&amp;quot;padding&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;margin&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;border&amp;quot;: &amp;quot;0px&amp;quot;, &amp;quot;width&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;height&amp;quot;: &amp;quot;24px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} &amp;gt;&lt;br /&gt;
  &amp;lt;span style={{&amp;quot;fontSize&amp;quot;: &amp;quot;22px&amp;quot;, &amp;quot;top&amp;quot;: &amp;quot;8px&amp;quot;}} className=&amp;quot;glyphicon glyphicon-list-alt&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File: app/views/assessment360/all_students_all_reviews.html.erb, app/views/assessment360/course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
Added conditionals to show selected columns for the html tables&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;% total_meta_review_count = @overall_meta_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_meta_reviews%&amp;gt;&amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_meta_review_grade / total_meta_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_grade = @overall_teammate_review_grades.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt;&amp;lt;% total_teammate_review_count = @overall_teammate_review_count.inject(0) {|sum, (k, v)| sum + v } %&amp;gt;&amp;lt;%end%&amp;gt;&lt;br /&gt;
  &amp;lt;% if @show_teammate_reviews%&amp;gt; &amp;lt;td&amp;gt;&amp;lt;%= &amp;quot;#{total_teammate_review_grade / total_teammate_review_count}%&amp;quot; %&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===2.Modify Controller===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added Variables to check if corresponding columns should be shown.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fields = params[:fields]&lt;br /&gt;
    @show_meta_reviews = fields.include? 'MetaReviewScores'&lt;br /&gt;
    @show_teammate_reviews = fields.include? 'TeammateReviewScores'&lt;br /&gt;
    @show_teammate_count = fields.include? 'NumberOfTeammates'&lt;br /&gt;
    @colspan_count = 2&lt;br /&gt;
    if !@show_teammate_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
    if !@show_meta_reviews&lt;br /&gt;
      @colspan_count -= 1&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===3.'Updated Variable Names===&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Renamed @teamed_count to @total_unique_teammates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  @total_unique_teammates = {}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modify course_student_grade_summary ====&lt;br /&gt;
&lt;br /&gt;
File: app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
Added ability to calculate average peer review score for each student in a course.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   @average_peer_review_score = {}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        next if peer_review_score.nil? &lt;br /&gt;
        next if peer_review_score[:total_score].nil?&lt;br /&gt;
        @average_peer_review_score[cp.id] += peer_review_score[:total_score].round(2)&lt;br /&gt;
      end&lt;br /&gt;
      if @assignments.count &amp;gt; 0&lt;br /&gt;
        @average_peer_review_score[cp.id] = (@average_peer_review_score[cp.id] / @assignments.count()).round(2)&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=='''Result'''==&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
File: spec/controllers/sign_up_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
Select assignment  with id '834' and topic with id ['E1732'] as params. Post params to delete_all_selected_topics. Expect success flash with 'All selected topics have been deleted successfully.' and redirect to '/assignments/834/edit#tabs-2'.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  describe '#delete_all_selected_topics' do&lt;br /&gt;
    it 'delete_all_selected_topics and redirects to edit assignment page' do&lt;br /&gt;
      allow(SignUpTopic).to receive(:find).with(assignment_id: '834',topic_identifier: ['E1732']).and_return(topic)&lt;br /&gt;
      params = {assignment_id: 834, idents: ['E1732']}&lt;br /&gt;
      post :delete_all_selected_topics, params&lt;br /&gt;
      expect(flash[:success]).to eq('All selected topics have been deleted successfully.')&lt;br /&gt;
      expect(response).to redirect_to('/assignments/834/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Achirasa</name></author>
	</entry>
</feed>