<?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=Sdsayani</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=Sdsayani"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sdsayani"/>
	<updated>2026-05-19T02:02:22Z</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_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142364</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142364"/>
		<updated>2021-11-30T05:00:10Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
HeatGrid page is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. &lt;br /&gt;
&lt;br /&gt;
There are two issues assigned to us:-&lt;br /&gt;
&lt;br /&gt;
* The first is that the column name &amp;quot;metric-1&amp;quot; in the heatgrid is not self-explanatory and needs to be changed. Also, we need to change it in such a way that in later stages if the instructor wants to add a new metric for the assignment, he/she should be add it with just a minor changes.&lt;br /&gt;
*The problem in the second issue is when an instructor tries to Assign Grades to a student 9277 for Madeup Problem 3, he/she is not able see the Round-1 Reviews. However, with the databases (old database) we were provided with do not have any student with Student id: 9277, and the assignment Madeup Problem 3 hasn't even existed. Also,&lt;br /&gt;
&lt;br /&gt;
=Issue 1869=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan of work ==&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation Detail ===&lt;br /&gt;
* In the view_team.html.erb and instead of pre-assigned value to be metric-1, a dropdown will be populated and the instructor can choose the metric for the review. By default in the dropdown, there will be only one metric to count the verbose comments.&lt;br /&gt;
&lt;br /&gt;
* Now, if the instructor wants to add any new metric, he/she just need to add the method for the metric in the app/views/assignment/edit/_general.html.erb file and that value will be stored in the database as a string in the heatgrid_metric variable and the same will be populated in the view of the heatgrid.&lt;br /&gt;
&lt;br /&gt;
=== Implementation Control Flow ===&lt;br /&gt;
[[File:1869CF.drawio.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow For Adding a Metric ===&lt;br /&gt;
[[File:1869NewCF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Detailed Implementation==&lt;br /&gt;
* In the database in the assignments table, one column named &amp;quot;heatgrid_metric&amp;quot; is added which will store the value of the dropdown menu.&lt;br /&gt;
* app/views/assignments/edit/_general.html.erb:- In this file we have added the dropdown which takes the metric from the instructor and sets the metric accordingly. The code we added is mentioned below:-&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td style='padding:5px' id='assignment_metrics_field'&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][heatgrid_metric]', 'Select a Metric to be displayed in the Report Heatgrid:') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= select('assignment_form[assignment]', 'heatgrid_metric', [['--', ''], %w[Verbose-Comment-Count countofcomments]], &lt;br /&gt;
    { :selected =&amp;gt; @assignment_form.assignment.heatgrid_metric}, { :class =&amp;gt; 'form-control', :style =&amp;gt; 'width: 100px'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have added assigned two values to the dropdown:- '--' and 'Verbose-Comment-Count'. This is how it looks after adding this dropdown on the expertiza:-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Assignment General page.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* app/views/grades/view_team.html.erb:- In this file, there is a view for the heatgrid, so when the instructor clicks on Assign Grades, the view from this file is rendered. So, the column name is changed here from &amp;quot;metric-1&amp;quot; to &amp;quot;countofcomments&amp;quot; variable, which will take the store the value of the dropdown selected.&lt;br /&gt;
&lt;br /&gt;
The code that we have changed is:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% case @assignment.heatgrid_metric %&amp;gt;&lt;br /&gt;
      &amp;lt;% when 'countofcomments' %&amp;gt;&lt;br /&gt;
      &amp;lt;th class=&amp;quot;sorter-false&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span  data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;A count of comments, for the respective question, &lt;br /&gt;
       which have word count &amp;gt; 10. The purpose of this metric is to represent how many comments for the question are &lt;br /&gt;
       of a substantial length to provide quality feedback.&amp;quot;&amp;gt;Verbose Comment Count&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This is how it now looks on expertiza:&lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
* Capybara Test cases for the heat grid view are added to select the value from the dropdown menu. Both the 'Verbose-Comment-Count' and '--' are added.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;is able to create a public assignment with countofcomments metric&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;Verbose-Comment-Count&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: 'countofcomments'&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	it &amp;quot;is able to create a public assignment with no metrics expected&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;--&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: ''&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spec test cases are added for the grades controller should be added to verify the responses returned from the controller. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#create with countofcomments' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      allow(AssignmentForm).to receive(:new).with(any_args).and_return(assignment_form)&lt;br /&gt;
      @params = {&lt;br /&gt;
        button: '',&lt;br /&gt;
        assignment_form: {&lt;br /&gt;
          assignment_questionnaire: [{&amp;quot;assignment_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;questionnaire_id&amp;quot; =&amp;gt; &amp;quot;666&amp;quot;, &amp;quot;dropdown&amp;quot; =&amp;gt; &amp;quot;true&amp;quot;,&lt;br /&gt;
                                      &amp;quot;questionnaire_weight&amp;quot; =&amp;gt; &amp;quot;100&amp;quot;, &amp;quot;notification_limit&amp;quot; =&amp;gt; &amp;quot;15&amp;quot;, &amp;quot;used_in_round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          due_date: [{&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/05 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;},&lt;br /&gt;
                     {&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;2&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/02 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          assignment: {&lt;br /&gt;
            instructor_id: 2,&lt;br /&gt;
            course_id: 1,&lt;br /&gt;
            max_team_size: 1,&lt;br /&gt;
            id: 1,&lt;br /&gt;
            name: 'test assignment',&lt;br /&gt;
            directory_path: '/test',&lt;br /&gt;
            spec_location: '',&lt;br /&gt;
            private: false,&lt;br /&gt;
            show_teammate_reviews: false,&lt;br /&gt;
            require_quiz: false,&lt;br /&gt;
            num_quiz_questions: 0,&lt;br /&gt;
            staggered_deadline: false,&lt;br /&gt;
            microtask: false,&lt;br /&gt;
            reviews_visible_to_all: false,&lt;br /&gt;
            is_calibrated: false,&lt;br /&gt;
            availability_flag: true,&lt;br /&gt;
            reputation_algorithm: 'Lauw',&lt;br /&gt;
            heatgrid_metric: 'countofcomments',&lt;br /&gt;
            simicheck: -1,&lt;br /&gt;
            simicheck_threshold: 100&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    end&lt;br /&gt;
    context 'when assignment_form is saved successfully' do&lt;br /&gt;
      it 'redirects to assignment#edit page' do&lt;br /&gt;
        allow(assignment_form).to receive(:assignment).and_return(assignment)&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:update).with(any_args).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:create_assignment_node).and_return(double('node'))&lt;br /&gt;
        allow(assignment).to receive(:id).and_return(1)&lt;br /&gt;
        allow(Assignment).to receive(:find_by).with(id: 1).and_return(assignment)&lt;br /&gt;
        allow_any_instance_of(AssignmentsController).to receive(:undo_link)&lt;br /&gt;
          .with('Assignment &amp;quot;test assignment&amp;quot; has been created successfully. ').and_return(true)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to redirect_to('/assignments/1/edit')&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment_form is not saved successfully' do&lt;br /&gt;
      it 'renders assignment#new page' do&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(false)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to render_template(:new)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unit test cases are added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#heatgrid_metric' do&lt;br /&gt;
    it 'returns countofcomments by default' do      &lt;br /&gt;
      assignment = create(:assignment)&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('countofcomments')&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it 'none value can be selected' do&lt;br /&gt;
      assignment = build(:assignment, heatgrid_metric: '')&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Issue 2019=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
When an instructor is trying to Assign a Grade for student 9277, he/she is not able to see Reviews for Round-1. However, we were not able to reproduce the same issue, as the student with id-9277 does not exist in our database.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Review rubric varies by round?&amp;quot; checkbox from the &amp;quot;Rubrics&amp;quot; tab of the Edit Assignment page. On selecting this checkbox, the reviewer is able to see all Rounds of Reviews.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:Rubrics-page.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the instructor is able to see both the Round of reviews.&lt;br /&gt;
&lt;br /&gt;
Now, if we deselect it, then the heatgrid metric view page looks as follows:- &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-wrong.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
So, as mentioned above, it works as intended, so if the instructor wants to see all the rounds of reviews, he/she have to mark the checkbox &amp;quot;Review rubric varies by round?&amp;quot; to true, then only it can be done. So, for that we have added a fix, we have set the value of the assignment to be true. For that, we created one migration that will set the value to true. Code looks as below:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class UpdateVaryByRoundToAssignments &amp;lt; ActiveRecord::Migration&lt;br /&gt;
  def change&lt;br /&gt;
    change_column :assignments, :vary_by_round, :boolean, :default =&amp;gt; true&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* GitHub repository PR link: https://github.com/expertiza/expertiza/pull/2125/files&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* Video Link for Issue #1869: https://www.youtube.com/watch?v=UAc_wI8ojkU&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142361</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142361"/>
		<updated>2021-11-30T04:59:29Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: /* Plan of work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
HeatGrid page is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. &lt;br /&gt;
&lt;br /&gt;
There are two issues assigned to us:-&lt;br /&gt;
&lt;br /&gt;
* The first is that the column name &amp;quot;metric-1&amp;quot; in the heatgrid is not self-explanatory and needs to be changed. Also, we need to change it in such a way that in later stages if the instructor wants to add a new metric for the assignment, he/she should be add it with just a minor changes.&lt;br /&gt;
*The problem in the second issue is when an instructor tries to Assign Grades to a student 9277 for Madeup Problem 3, he/she is not able see the Round-1 Reviews. However, with the databases (old database) we were provided with do not have any student with Student id: 9277, and the assignment Madeup Problem 3 hasn't even existed. Also,&lt;br /&gt;
&lt;br /&gt;
=Issue 1869=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan of work ==&lt;br /&gt;
&lt;br /&gt;
=== Current Implementation Detail ===&lt;br /&gt;
* In the view_team.html.erb and instead of pre-assigned value to be metric-1, a dropdown will be populated and the instructor can choose the metric for the review. By default in the dropdown, there will be only one metric to count the verbose comments.&lt;br /&gt;
&lt;br /&gt;
* Now, if the instructor wants to add any new metric, he/she just need to add the method for the metric in the app/views/assignment/edit/_general.html.erb file and that value will be stored in the database as a string in the heatgrid_metric variable and the same will be populated in the view of the heatgrid.&lt;br /&gt;
&lt;br /&gt;
=== Implementation Control Flow ===&lt;br /&gt;
[[File:1869CF.drawio.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow For Adding a Metric ===&lt;br /&gt;
[[File:1869NewCF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Detailed Implementation==&lt;br /&gt;
* In the database in the assignments table, one column named &amp;quot;heatgrid_metric&amp;quot; is added which will store the value of the dropdown menu.&lt;br /&gt;
* app/views/assignments/edit/_general.html.erb:- In this file we have added the dropdown which takes the metric from the instructor and sets the metric accordingly. The code we added is mentioned below:-&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td style='padding:5px' id='assignment_metrics_field'&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][heatgrid_metric]', 'Select a Metric to be displayed in the Report Heatgrid:') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= select('assignment_form[assignment]', 'heatgrid_metric', [['--', ''], %w[Verbose-Comment-Count countofcomments]], &lt;br /&gt;
    { :selected =&amp;gt; @assignment_form.assignment.heatgrid_metric}, { :class =&amp;gt; 'form-control', :style =&amp;gt; 'width: 100px'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have added assigned two values to the dropdown:- '--' and 'Verbose-Comment-Count'. This is how it looks after adding this dropdown on the expertiza:-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Assignment General page.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* app/views/grades/view_team.html.erb:- In this file, there is a view for the heatgrid, so when the instructor clicks on Assign Grades, the view from this file is rendered. So, the column name is changed here from &amp;quot;metric-1&amp;quot; to &amp;quot;countofcomments&amp;quot; variable, which will take the store the value of the dropdown selected.&lt;br /&gt;
&lt;br /&gt;
The code that we have changed is:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% case @assignment.heatgrid_metric %&amp;gt;&lt;br /&gt;
      &amp;lt;% when 'countofcomments' %&amp;gt;&lt;br /&gt;
      &amp;lt;th class=&amp;quot;sorter-false&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span  data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;A count of comments, for the respective question, &lt;br /&gt;
       which have word count &amp;gt; 10. The purpose of this metric is to represent how many comments for the question are &lt;br /&gt;
       of a substantial length to provide quality feedback.&amp;quot;&amp;gt;Verbose Comment Count&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This is how it now looks on expertiza:&lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
* Capybara Test cases for the heat grid view are added to select the value from the dropdown menu. Both the 'Verbose-Comment-Count' and '--' are added.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;is able to create a public assignment with countofcomments metric&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;Verbose-Comment-Count&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: 'countofcomments'&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	it &amp;quot;is able to create a public assignment with no metrics expected&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;--&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: ''&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spec test cases are added for the grades controller should be added to verify the responses returned from the controller. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#create with countofcomments' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      allow(AssignmentForm).to receive(:new).with(any_args).and_return(assignment_form)&lt;br /&gt;
      @params = {&lt;br /&gt;
        button: '',&lt;br /&gt;
        assignment_form: {&lt;br /&gt;
          assignment_questionnaire: [{&amp;quot;assignment_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;questionnaire_id&amp;quot; =&amp;gt; &amp;quot;666&amp;quot;, &amp;quot;dropdown&amp;quot; =&amp;gt; &amp;quot;true&amp;quot;,&lt;br /&gt;
                                      &amp;quot;questionnaire_weight&amp;quot; =&amp;gt; &amp;quot;100&amp;quot;, &amp;quot;notification_limit&amp;quot; =&amp;gt; &amp;quot;15&amp;quot;, &amp;quot;used_in_round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          due_date: [{&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/05 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;},&lt;br /&gt;
                     {&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;2&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/02 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          assignment: {&lt;br /&gt;
            instructor_id: 2,&lt;br /&gt;
            course_id: 1,&lt;br /&gt;
            max_team_size: 1,&lt;br /&gt;
            id: 1,&lt;br /&gt;
            name: 'test assignment',&lt;br /&gt;
            directory_path: '/test',&lt;br /&gt;
            spec_location: '',&lt;br /&gt;
            private: false,&lt;br /&gt;
            show_teammate_reviews: false,&lt;br /&gt;
            require_quiz: false,&lt;br /&gt;
            num_quiz_questions: 0,&lt;br /&gt;
            staggered_deadline: false,&lt;br /&gt;
            microtask: false,&lt;br /&gt;
            reviews_visible_to_all: false,&lt;br /&gt;
            is_calibrated: false,&lt;br /&gt;
            availability_flag: true,&lt;br /&gt;
            reputation_algorithm: 'Lauw',&lt;br /&gt;
            heatgrid_metric: 'countofcomments',&lt;br /&gt;
            simicheck: -1,&lt;br /&gt;
            simicheck_threshold: 100&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    end&lt;br /&gt;
    context 'when assignment_form is saved successfully' do&lt;br /&gt;
      it 'redirects to assignment#edit page' do&lt;br /&gt;
        allow(assignment_form).to receive(:assignment).and_return(assignment)&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:update).with(any_args).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:create_assignment_node).and_return(double('node'))&lt;br /&gt;
        allow(assignment).to receive(:id).and_return(1)&lt;br /&gt;
        allow(Assignment).to receive(:find_by).with(id: 1).and_return(assignment)&lt;br /&gt;
        allow_any_instance_of(AssignmentsController).to receive(:undo_link)&lt;br /&gt;
          .with('Assignment &amp;quot;test assignment&amp;quot; has been created successfully. ').and_return(true)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to redirect_to('/assignments/1/edit')&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment_form is not saved successfully' do&lt;br /&gt;
      it 'renders assignment#new page' do&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(false)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to render_template(:new)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unit test cases are added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#heatgrid_metric' do&lt;br /&gt;
    it 'returns countofcomments by default' do      &lt;br /&gt;
      assignment = create(:assignment)&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('countofcomments')&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it 'none value can be selected' do&lt;br /&gt;
      assignment = build(:assignment, heatgrid_metric: '')&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Issue 2019=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
When an instructor is trying to Assign a Grade for student 9277, he/she is not able to see Reviews for Round-1. However, we were not able to reproduce the same issue, as the student with id-9277 does not exist in our database.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Review rubric varies by round?&amp;quot; checkbox from the &amp;quot;Rubrics&amp;quot; tab of the Edit Assignment page. On selecting this checkbox, the reviewer is able to see all Rounds of Reviews.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:Rubrics-page.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the instructor is able to see both the Round of reviews.&lt;br /&gt;
&lt;br /&gt;
Now, if we deselect it, then the heatgrid metric view page looks as follows:- &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-wrong.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
So, as mentioned above, it works as intended, so if the instructor wants to see all the rounds of reviews, he/she have to mark the checkbox &amp;quot;Review rubric varies by round?&amp;quot; to true, then only it can be done. So, for that we have added a fix, we have set the value of the assignment to be true. For that, we created one migration that will set the value to true. Code looks as below:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class UpdateVaryByRoundToAssignments &amp;lt; ActiveRecord::Migration&lt;br /&gt;
  def change&lt;br /&gt;
    change_column :assignments, :vary_by_round, :boolean, :default =&amp;gt; true&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* Video Link for Issue #1869: https://www.youtube.com/watch?v=UAc_wI8ojkU&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142360</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142360"/>
		<updated>2021-11-30T04:58:54Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: /* Plan of work */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
HeatGrid page is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. &lt;br /&gt;
&lt;br /&gt;
There are two issues assigned to us:-&lt;br /&gt;
&lt;br /&gt;
* The first is that the column name &amp;quot;metric-1&amp;quot; in the heatgrid is not self-explanatory and needs to be changed. Also, we need to change it in such a way that in later stages if the instructor wants to add a new metric for the assignment, he/she should be add it with just a minor changes.&lt;br /&gt;
*The problem in the second issue is when an instructor tries to Assign Grades to a student 9277 for Madeup Problem 3, he/she is not able see the Round-1 Reviews. However, with the databases (old database) we were provided with do not have any student with Student id: 9277, and the assignment Madeup Problem 3 hasn't even existed. Also,&lt;br /&gt;
&lt;br /&gt;
=Issue 1869=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan of work ==&lt;br /&gt;
&lt;br /&gt;
=== Current Implemented Detail ===&lt;br /&gt;
* In the view_team.html.erb and instead of pre-assigned value to be metric-1, a dropdown will be populated and the instructor can choose the metric for the review. By default in the dropdown, there will be only one metric to count the verbose comments.&lt;br /&gt;
&lt;br /&gt;
* Now, if the instructor wants to add any new metric, he/she just need to add the method for the metric in the app/views/assignment/edit/_general.html.erb file and that value will be stored in the database as a string in the heatgrid_metric variable and the same will be populated in the view of the heatgrid.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow ===&lt;br /&gt;
[[File:1869CF.drawio.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow For Adding a Metric ===&lt;br /&gt;
[[File:1869NewCF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Detailed Implementation==&lt;br /&gt;
* In the database in the assignments table, one column named &amp;quot;heatgrid_metric&amp;quot; is added which will store the value of the dropdown menu.&lt;br /&gt;
* app/views/assignments/edit/_general.html.erb:- In this file we have added the dropdown which takes the metric from the instructor and sets the metric accordingly. The code we added is mentioned below:-&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td style='padding:5px' id='assignment_metrics_field'&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][heatgrid_metric]', 'Select a Metric to be displayed in the Report Heatgrid:') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= select('assignment_form[assignment]', 'heatgrid_metric', [['--', ''], %w[Verbose-Comment-Count countofcomments]], &lt;br /&gt;
    { :selected =&amp;gt; @assignment_form.assignment.heatgrid_metric}, { :class =&amp;gt; 'form-control', :style =&amp;gt; 'width: 100px'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have added assigned two values to the dropdown:- '--' and 'Verbose-Comment-Count'. This is how it looks after adding this dropdown on the expertiza:-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Assignment General page.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* app/views/grades/view_team.html.erb:- In this file, there is a view for the heatgrid, so when the instructor clicks on Assign Grades, the view from this file is rendered. So, the column name is changed here from &amp;quot;metric-1&amp;quot; to &amp;quot;countofcomments&amp;quot; variable, which will take the store the value of the dropdown selected.&lt;br /&gt;
&lt;br /&gt;
The code that we have changed is:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% case @assignment.heatgrid_metric %&amp;gt;&lt;br /&gt;
      &amp;lt;% when 'countofcomments' %&amp;gt;&lt;br /&gt;
      &amp;lt;th class=&amp;quot;sorter-false&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span  data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;A count of comments, for the respective question, &lt;br /&gt;
       which have word count &amp;gt; 10. The purpose of this metric is to represent how many comments for the question are &lt;br /&gt;
       of a substantial length to provide quality feedback.&amp;quot;&amp;gt;Verbose Comment Count&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This is how it now looks on expertiza:&lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
* Capybara Test cases for the heat grid view are added to select the value from the dropdown menu. Both the 'Verbose-Comment-Count' and '--' are added.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;is able to create a public assignment with countofcomments metric&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;Verbose-Comment-Count&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: 'countofcomments'&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	it &amp;quot;is able to create a public assignment with no metrics expected&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;--&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: ''&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spec test cases are added for the grades controller should be added to verify the responses returned from the controller. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#create with countofcomments' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      allow(AssignmentForm).to receive(:new).with(any_args).and_return(assignment_form)&lt;br /&gt;
      @params = {&lt;br /&gt;
        button: '',&lt;br /&gt;
        assignment_form: {&lt;br /&gt;
          assignment_questionnaire: [{&amp;quot;assignment_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;questionnaire_id&amp;quot; =&amp;gt; &amp;quot;666&amp;quot;, &amp;quot;dropdown&amp;quot; =&amp;gt; &amp;quot;true&amp;quot;,&lt;br /&gt;
                                      &amp;quot;questionnaire_weight&amp;quot; =&amp;gt; &amp;quot;100&amp;quot;, &amp;quot;notification_limit&amp;quot; =&amp;gt; &amp;quot;15&amp;quot;, &amp;quot;used_in_round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          due_date: [{&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/05 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;},&lt;br /&gt;
                     {&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;2&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/02 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          assignment: {&lt;br /&gt;
            instructor_id: 2,&lt;br /&gt;
            course_id: 1,&lt;br /&gt;
            max_team_size: 1,&lt;br /&gt;
            id: 1,&lt;br /&gt;
            name: 'test assignment',&lt;br /&gt;
            directory_path: '/test',&lt;br /&gt;
            spec_location: '',&lt;br /&gt;
            private: false,&lt;br /&gt;
            show_teammate_reviews: false,&lt;br /&gt;
            require_quiz: false,&lt;br /&gt;
            num_quiz_questions: 0,&lt;br /&gt;
            staggered_deadline: false,&lt;br /&gt;
            microtask: false,&lt;br /&gt;
            reviews_visible_to_all: false,&lt;br /&gt;
            is_calibrated: false,&lt;br /&gt;
            availability_flag: true,&lt;br /&gt;
            reputation_algorithm: 'Lauw',&lt;br /&gt;
            heatgrid_metric: 'countofcomments',&lt;br /&gt;
            simicheck: -1,&lt;br /&gt;
            simicheck_threshold: 100&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    end&lt;br /&gt;
    context 'when assignment_form is saved successfully' do&lt;br /&gt;
      it 'redirects to assignment#edit page' do&lt;br /&gt;
        allow(assignment_form).to receive(:assignment).and_return(assignment)&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:update).with(any_args).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:create_assignment_node).and_return(double('node'))&lt;br /&gt;
        allow(assignment).to receive(:id).and_return(1)&lt;br /&gt;
        allow(Assignment).to receive(:find_by).with(id: 1).and_return(assignment)&lt;br /&gt;
        allow_any_instance_of(AssignmentsController).to receive(:undo_link)&lt;br /&gt;
          .with('Assignment &amp;quot;test assignment&amp;quot; has been created successfully. ').and_return(true)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to redirect_to('/assignments/1/edit')&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment_form is not saved successfully' do&lt;br /&gt;
      it 'renders assignment#new page' do&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(false)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to render_template(:new)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unit test cases are added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#heatgrid_metric' do&lt;br /&gt;
    it 'returns countofcomments by default' do      &lt;br /&gt;
      assignment = create(:assignment)&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('countofcomments')&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it 'none value can be selected' do&lt;br /&gt;
      assignment = build(:assignment, heatgrid_metric: '')&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Issue 2019=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
When an instructor is trying to Assign a Grade for student 9277, he/she is not able to see Reviews for Round-1. However, we were not able to reproduce the same issue, as the student with id-9277 does not exist in our database.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Review rubric varies by round?&amp;quot; checkbox from the &amp;quot;Rubrics&amp;quot; tab of the Edit Assignment page. On selecting this checkbox, the reviewer is able to see all Rounds of Reviews.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:Rubrics-page.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the instructor is able to see both the Round of reviews.&lt;br /&gt;
&lt;br /&gt;
Now, if we deselect it, then the heatgrid metric view page looks as follows:- &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-wrong.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
So, as mentioned above, it works as intended, so if the instructor wants to see all the rounds of reviews, he/she have to mark the checkbox &amp;quot;Review rubric varies by round?&amp;quot; to true, then only it can be done. So, for that we have added a fix, we have set the value of the assignment to be true. For that, we created one migration that will set the value to true. Code looks as below:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class UpdateVaryByRoundToAssignments &amp;lt; ActiveRecord::Migration&lt;br /&gt;
  def change&lt;br /&gt;
    change_column :assignments, :vary_by_round, :boolean, :default =&amp;gt; true&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* Video Link for Issue #1869: https://www.youtube.com/watch?v=UAc_wI8ojkU&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142358</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=142358"/>
		<updated>2021-11-30T04:58:26Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: /* Proposed Control Flow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
HeatGrid page is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. &lt;br /&gt;
&lt;br /&gt;
There are two issues assigned to us:-&lt;br /&gt;
&lt;br /&gt;
* The first is that the column name &amp;quot;metric-1&amp;quot; in the heatgrid is not self-explanatory and needs to be changed. Also, we need to change it in such a way that in later stages if the instructor wants to add a new metric for the assignment, he/she should be add it with just a minor changes.&lt;br /&gt;
*The problem in the second issue is when an instructor tries to Assign Grades to a student 9277 for Madeup Problem 3, he/she is not able see the Round-1 Reviews. However, with the databases (old database) we were provided with do not have any student with Student id: 9277, and the assignment Madeup Problem 3 hasn't even existed. Also,&lt;br /&gt;
&lt;br /&gt;
=Issue 1869=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan of work ==&lt;br /&gt;
&lt;br /&gt;
=== Current Implemented Detail ===&lt;br /&gt;
* In the view_team.html.erb and instead of pre-assigned value to be metric-1, a dropdown will be populated and the instructor can choose the metric for the review. By default in the dropdown, there will be only one metric to count the verbose comments.&lt;br /&gt;
&lt;br /&gt;
* Now, if the instructor wants to add any new metric, he/she just need to add the method for the metric in the app/views/assignment/edit/_general.html.erb file and that value will be stored in the database as a string in the heatgrid_metric variable and the same will be populated in the view of the heatgrid.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow ===&lt;br /&gt;
[[File:1869CF.drawio.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Detailed Implementation==&lt;br /&gt;
* In the database in the assignments table, one column named &amp;quot;heatgrid_metric&amp;quot; is added which will store the value of the dropdown menu.&lt;br /&gt;
* app/views/assignments/edit/_general.html.erb:- In this file we have added the dropdown which takes the metric from the instructor and sets the metric accordingly. The code we added is mentioned below:-&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td style='padding:5px' id='assignment_metrics_field'&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][heatgrid_metric]', 'Select a Metric to be displayed in the Report Heatgrid:') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= select('assignment_form[assignment]', 'heatgrid_metric', [['--', ''], %w[Verbose-Comment-Count countofcomments]], &lt;br /&gt;
    { :selected =&amp;gt; @assignment_form.assignment.heatgrid_metric}, { :class =&amp;gt; 'form-control', :style =&amp;gt; 'width: 100px'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have added assigned two values to the dropdown:- '--' and 'Verbose-Comment-Count'. This is how it looks after adding this dropdown on the expertiza:-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File: Assignment General page.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* app/views/grades/view_team.html.erb:- In this file, there is a view for the heatgrid, so when the instructor clicks on Assign Grades, the view from this file is rendered. So, the column name is changed here from &amp;quot;metric-1&amp;quot; to &amp;quot;countofcomments&amp;quot; variable, which will take the store the value of the dropdown selected.&lt;br /&gt;
&lt;br /&gt;
The code that we have changed is:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% case @assignment.heatgrid_metric %&amp;gt;&lt;br /&gt;
      &amp;lt;% when 'countofcomments' %&amp;gt;&lt;br /&gt;
      &amp;lt;th class=&amp;quot;sorter-false&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;span  data-toggle=&amp;quot;tooltip&amp;quot; data-placement=&amp;quot;right&amp;quot; title=&amp;quot;A count of comments, for the respective question, &lt;br /&gt;
       which have word count &amp;gt; 10. The purpose of this metric is to represent how many comments for the question are &lt;br /&gt;
       of a substantial length to provide quality feedback.&amp;quot;&amp;gt;Verbose Comment Count&amp;lt;/span&amp;gt;&lt;br /&gt;
       &amp;lt;/th&amp;gt;&lt;br /&gt;
       &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This is how it now looks on expertiza:&lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
* Capybara Test cases for the heat grid view are added to select the value from the dropdown menu. Both the 'Verbose-Comment-Count' and '--' are added.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
it &amp;quot;is able to create a public assignment with countofcomments metric&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;Verbose-Comment-Count&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: 'countofcomments'&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	it &amp;quot;is able to create a public assignment with no metrics expected&amp;quot; do&lt;br /&gt;
		login_as(&amp;quot;instructor6&amp;quot;)&lt;br /&gt;
		visit &amp;quot;/assignments/new?private=0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		fill_in 'assignment_form_assignment_name', with: 'public assignment for test'&lt;br /&gt;
		select('Course 2', from: 'assignment_form_assignment_course_id')&lt;br /&gt;
		fill_in 'assignment_form_assignment_directory_path', with: 'testDirectory'&lt;br /&gt;
		fill_in 'assignment_form_assignment_spec_location', with: 'testLocation'&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_microtask&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_reviews_visible_to_all&amp;quot;)&lt;br /&gt;
		check(&amp;quot;assignment_form_assignment_is_calibrated&amp;quot;)&lt;br /&gt;
		uncheck(&amp;quot;assignment_form_assignment_availability_flag&amp;quot;)&lt;br /&gt;
		expect(page).to have_select(&amp;quot;assignment_form[assignment][reputation_algorithm]&amp;quot;, options: %w[-- Hamer Lauw])&lt;br /&gt;
		select &amp;quot;--&amp;quot;, from: 'countsofcomment'&lt;br /&gt;
&lt;br /&gt;
		click_button 'Create'&lt;br /&gt;
		assignment = Assignment.where(name: 'public assignment for test').first&lt;br /&gt;
		expect(assignment).to have_attributes(&lt;br /&gt;
			name: 'public assignment for test',&lt;br /&gt;
			course_id: Course.find_by(name: 'Course 2').id,&lt;br /&gt;
			directory_path: 'testDirectory',&lt;br /&gt;
			spec_location: 'testLocation',&lt;br /&gt;
			microtask: true,&lt;br /&gt;
			is_calibrated: true,&lt;br /&gt;
			availability_flag: false,&lt;br /&gt;
			heatgrid_metric: ''&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spec test cases are added for the grades controller should be added to verify the responses returned from the controller. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#create with countofcomments' do&lt;br /&gt;
    before(:each) do&lt;br /&gt;
      allow(AssignmentForm).to receive(:new).with(any_args).and_return(assignment_form)&lt;br /&gt;
      @params = {&lt;br /&gt;
        button: '',&lt;br /&gt;
        assignment_form: {&lt;br /&gt;
          assignment_questionnaire: [{&amp;quot;assignment_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;questionnaire_id&amp;quot; =&amp;gt; &amp;quot;666&amp;quot;, &amp;quot;dropdown&amp;quot; =&amp;gt; &amp;quot;true&amp;quot;,&lt;br /&gt;
                                      &amp;quot;questionnaire_weight&amp;quot; =&amp;gt; &amp;quot;100&amp;quot;, &amp;quot;notification_limit&amp;quot; =&amp;gt; &amp;quot;15&amp;quot;, &amp;quot;used_in_round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          due_date: [{&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/05 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;},&lt;br /&gt;
                     {&amp;quot;id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;parent_id&amp;quot; =&amp;gt; &amp;quot;&amp;quot;, &amp;quot;round&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;deadline_type_id&amp;quot; =&amp;gt; &amp;quot;2&amp;quot;, &amp;quot;due_at&amp;quot; =&amp;gt; &amp;quot;2017/12/02 00:00&amp;quot;, &amp;quot;submission_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;teammate_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;3&amp;quot;, &amp;quot;review_of_review_allowed_id&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;, &amp;quot;threshold&amp;quot; =&amp;gt; &amp;quot;1&amp;quot;}],&lt;br /&gt;
          assignment: {&lt;br /&gt;
            instructor_id: 2,&lt;br /&gt;
            course_id: 1,&lt;br /&gt;
            max_team_size: 1,&lt;br /&gt;
            id: 1,&lt;br /&gt;
            name: 'test assignment',&lt;br /&gt;
            directory_path: '/test',&lt;br /&gt;
            spec_location: '',&lt;br /&gt;
            private: false,&lt;br /&gt;
            show_teammate_reviews: false,&lt;br /&gt;
            require_quiz: false,&lt;br /&gt;
            num_quiz_questions: 0,&lt;br /&gt;
            staggered_deadline: false,&lt;br /&gt;
            microtask: false,&lt;br /&gt;
            reviews_visible_to_all: false,&lt;br /&gt;
            is_calibrated: false,&lt;br /&gt;
            availability_flag: true,&lt;br /&gt;
            reputation_algorithm: 'Lauw',&lt;br /&gt;
            heatgrid_metric: 'countofcomments',&lt;br /&gt;
            simicheck: -1,&lt;br /&gt;
            simicheck_threshold: 100&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    end&lt;br /&gt;
    context 'when assignment_form is saved successfully' do&lt;br /&gt;
      it 'redirects to assignment#edit page' do&lt;br /&gt;
        allow(assignment_form).to receive(:assignment).and_return(assignment)&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:update).with(any_args).and_return(true)&lt;br /&gt;
        allow(assignment_form).to receive(:create_assignment_node).and_return(double('node'))&lt;br /&gt;
        allow(assignment).to receive(:id).and_return(1)&lt;br /&gt;
        allow(Assignment).to receive(:find_by).with(id: 1).and_return(assignment)&lt;br /&gt;
        allow_any_instance_of(AssignmentsController).to receive(:undo_link)&lt;br /&gt;
          .with('Assignment &amp;quot;test assignment&amp;quot; has been created successfully. ').and_return(true)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to redirect_to('/assignments/1/edit')&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    context 'when assignment_form is not saved successfully' do&lt;br /&gt;
      it 'renders assignment#new page' do&lt;br /&gt;
        allow(assignment_form).to receive(:save).and_return(false)&lt;br /&gt;
        post :create, @params&lt;br /&gt;
        expect(response).to render_template(:new)&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Unit test cases are added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
describe '#heatgrid_metric' do&lt;br /&gt;
    it 'returns countofcomments by default' do      &lt;br /&gt;
      assignment = create(:assignment)&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('countofcomments')&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    it 'none value can be selected' do&lt;br /&gt;
      assignment = build(:assignment, heatgrid_metric: '')&lt;br /&gt;
      expect(assignment.heatgrid_metric).to eq('')&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Issue 2019=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
When an instructor is trying to Assign a Grade for student 9277, he/she is not able to see Reviews for Round-1. However, we were not able to reproduce the same issue, as the student with id-9277 does not exist in our database.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Review rubric varies by round?&amp;quot; checkbox from the &amp;quot;Rubrics&amp;quot; tab of the Edit Assignment page. On selecting this checkbox, the reviewer is able to see all Rounds of Reviews.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:Rubrics-page.png ]] &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-metric.png]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the instructor is able to see both the Round of reviews.&lt;br /&gt;
&lt;br /&gt;
Now, if we deselect it, then the heatgrid metric view page looks as follows:- &lt;br /&gt;
&lt;br /&gt;
[[File:Heatgrid-wrong.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
So, as mentioned above, it works as intended, so if the instructor wants to see all the rounds of reviews, he/she have to mark the checkbox &amp;quot;Review rubric varies by round?&amp;quot; to true, then only it can be done. So, for that we have added a fix, we have set the value of the assignment to be true. For that, we created one migration that will set the value to true. Code looks as below:-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class UpdateVaryByRoundToAssignments &amp;lt; ActiveRecord::Migration&lt;br /&gt;
  def change&lt;br /&gt;
    change_column :assignments, :vary_by_round, :boolean, :default =&amp;gt; true&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* Video Link for Issue #1869: https://www.youtube.com/watch?v=UAc_wI8ojkU&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:1869NewCF.png&amp;diff=142357</id>
		<title>File:1869NewCF.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:1869NewCF.png&amp;diff=142357"/>
		<updated>2021-11-30T04:58:20Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:1869CF.drawio.png&amp;diff=142356</id>
		<title>File:1869CF.drawio.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:1869CF.drawio.png&amp;diff=142356"/>
		<updated>2021-11-30T04:57:48Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=141288</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=141288"/>
		<updated>2021-11-08T21:25:11Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But, there is an issue where the students can review their own assignments.  Also, the column name &amp;quot;metric-1&amp;quot; is not self explanatory and needs to be changed.&lt;br /&gt;
&lt;br /&gt;
=Issue 2019=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
This questions whether the reviewers are correctly identified. Students should not be able to review his/her assignment. However, we were not able to reproduce the same issue, as it is already being resolved in the current expertiza. So, we will write tests such that if this bug occurs again, instructors will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
[[File:Issue1CF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
Whenever an instructor assigns a reviewer for an assignment of a team, there is already a check present and it is not allowing instructor to assign the team member of the team for the review.&lt;br /&gt;
&lt;br /&gt;
[[File:CheckReviewer.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Issue 1869=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan of work ==&lt;br /&gt;
&lt;br /&gt;
=== Implementation Details ===&lt;br /&gt;
* In the view_team.html.erb and _view_heatgrid.html.erb, instead of pre-assigned value to be metric-1, a dropdown will be populated and the instructor can choose the metric for the review. By default in the dropdown, there will be only one metric to count the number of words &amp;gt; 10.&lt;br /&gt;
* In the grades_helper.rb, there is a view_heatgrid() function, in which only the number_of_words_greater_than_10 method is called, now instead of that, a dictionary will be assigned which will call the method on the basis of the review metric selected by the instructor.&lt;br /&gt;
* Now, if the instructor wants to add any new metric, he/she just need to add the method for the metric in the vm_question_response.rb file and a new key-value mapping for that particular method needs to be added to the dictionary.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow ===&lt;br /&gt;
[[File:Issue2CF.png|1200px|thumb|center]] &lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; Capybara Test cases for the heat grid view and team view should be added to check if the dropdown is visible as expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Spec test cases should be added for the grades controller should be added to verify the responses returned from the controller. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Unit test cases will be added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=141287</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=141287"/>
		<updated>2021-11-08T21:22:20Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But, there is an issue where the students can review their own assignments.  Also, the column name &amp;quot;metric-1&amp;quot; is not self explanatory and needs to be changed.&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
This questions whether the reviewers are correctly identified. Students should not be able to review his/her assignment. However, we were not able to reproduce the same issue, as it is already being resolved in the current expertiza. So, we will write tests such that if this bug occurs again, instructors will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
[[File:Issue1CF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
Whenever an instructor assigns a reviewer for an assignment of a team, there is already a check present and it is not allowing instructor to assign the team member of the team for the review.&lt;br /&gt;
&lt;br /&gt;
[[File:CheckReviewer.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Plan of work ==&lt;br /&gt;
&lt;br /&gt;
=== Implementation Details ===&lt;br /&gt;
* In the view_team.html.erb and _view_heatgrid.html.erb, instead of pre-assigned value to be metric-1, a dropdown will be populated and the instructor can choose the metric for the review. By default in the dropdown, there will be only one metric to count the number of words &amp;gt; 10.&lt;br /&gt;
* In the grades_helper.rb, there is a view_heatgrid() function, in which only the number_of_words_greater_than_10 method is called, now instead of that, a dictionary will be assigned which will call the method on the basis of the review metric selected by the instructor.&lt;br /&gt;
* Now, if the instructor wants to add any new metric, he/she just need to add the method for the metric in the vm_question_response.rb file and a new key-value mapping for that particular method needs to be added to the dictionary.&lt;br /&gt;
&lt;br /&gt;
=== Proposed Control Flow ===&lt;br /&gt;
[[File:Issue2CF.png|1200px|thumb|center]] &lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; Capybara Test cases for the heat grid view and team view should be added to check if the dropdown is visible as expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Spec test cases should be added for the grades controller should be added to verify the responses returned from the controller. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Unit test cases will be added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue2CF.png&amp;diff=141284</id>
		<title>File:Issue2CF.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue2CF.png&amp;diff=141284"/>
		<updated>2021-11-08T21:19:47Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140883</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140883"/>
		<updated>2021-11-04T03:34:38Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But, there is an issue where the students can review their own assignments.  Also, the column name &amp;quot;metric-1&amp;quot; is not self explanatory and needs to be changed.&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
This questions whether the reviewers are correctly identified. In one case, a student was shown as reviewing his/her team, which should not be possible. Also write tests so that if this bug occurs again, we will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
[[File:Issue1CF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
Whenever an instructor assigns a reviewer for an assignment of a team, there is already a check present and it is not allowing instructor to assign the team member of the team for the review.&lt;br /&gt;
&lt;br /&gt;
[[File:CheckReviewer.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
The header for the metric-1 column should be changed and it should display an appropriate name for the metric.&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function and  of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; Capybara Test cases for the heat grid view and team view should be added to check if the dropdown is visible as expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Spec test cases should be added for the grades controller should be added to verify the responses returned from the controller. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Unit test cases will be added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140881</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140881"/>
		<updated>2021-11-04T03:31:39Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But , there are issues that students are reviews themselves. Question is about Are reviews getting assigned correctly? Assignment of metric is also wrong at some places&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
Questions whether the reviewers are correctly identified.  In one case, a student was shown as reviewing his/her team, which is impossible.  Also write tests so that if this bug occurs again, we will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
[[File:Issue1CF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
Whenever an instructor assigns a reviewer for an assignment of a team, there is already a check present and it is not allowing instructor to assign the team member of the team for the review.&lt;br /&gt;
&lt;br /&gt;
[[File:CheckReviewer.png]]&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
The header for the metric-1 column should be changed and it should display an appropriate name for the metric.&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function and  of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; Capybara Test cases for the heat grid view and team view should be added to check if the dropdown is visible as expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Spec test cases should be added for the grades controller should be added to verify the responses returned from the controller. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Unit test cases will be added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
* GitHub Issue #1869: https://github.com/expertiza/expertiza/issues/1869&lt;br /&gt;
* GitHub Issue #2019: https://github.com/expertiza/expertiza/issues/2019&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140832</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140832"/>
		<updated>2021-11-04T01:54:11Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But , there are issues that students are reviews themselves. Question is about Are reviews getting assigned correctly? Assignment of metric is also wrong at some places&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
Questions whether the reviewers are correctly identified.  In one case, a student was shown as reviewing his/her team, which is impossible.  Also write tests so that if this bug occurs again, we will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
[[File:Issue1CF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function and  of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; Capybara Test cases for the heat grid view and team view should be added to check if the dropdown is visible as expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Spec test cases should be added for the grades controller should be added to verify the responses returned from the controller. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Unit test cases will be added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
* GitHub repository link: https://github.com/ShlokSayani/expertiza&lt;br /&gt;
* Project Description Document: https://docs.google.com/document/d/1slx4HPIbgTH-psIKMSCF-HDF9brxf-FuYhzVT9ZiIrM/edit#heading=h.tqdrrd12xs4x&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140830</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140830"/>
		<updated>2021-11-04T01:52:18Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But , there are issues that students are reviews themselves. Question is about Are reviews getting assigned correctly? Assignment of metric is also wrong at some places&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
Questions whether the reviewers are correctly identified.  In one case, a student was shown as reviewing his/her team, which is impossible.  Also write tests so that if this bug occurs again, we will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
[[File:Issue1CF.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function and  of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; Capybara Test cases for the heat grid view and team view should be added to check if the dropdown is visible as expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Spec test cases should be added for the grades controller should be added to verify the responses returned from the controller. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Unit test cases will be added to verify the logic of the number_of_comments_greater_than_10_words method of the vm_question_response model. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue1CF.png&amp;diff=140827</id>
		<title>File:Issue1CF.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue1CF.png&amp;diff=140827"/>
		<updated>2021-11-04T01:50:59Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140785</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140785"/>
		<updated>2021-11-04T01:30:19Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But , there are issues that students are reviews themselves. Question is about Are reviews getting assigned correctly? Assignment of metric is also wrong at some places&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
Questions whether the reviewers are correctly identified.  In one case, a student was shown as reviewing his/her team, which is impossible.  Also write tests so that if this bug occurs again, we will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information apparent at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function and  of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
&amp;lt;li&amp;gt; Add features' test case so handle the drop-down for the metrics column of a heat-grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the specific metric is selected, then it should return the expected output for that particular metric. For that, test cases should be added to check the populate_view_model of the grades_controller.rb controller and also the number_of_comments_greater_than_10_words method of the vm_question_response.rb model.&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140780</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140780"/>
		<updated>2021-11-04T01:24:33Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Heatgrid is the page where instructor can visit and view the work done by participant using Reviews, Author Feedbacks and Meta Reviews. This one web page displays all the evaluations done by peers of the participant for his project. The page is displayed in the format of table with colors. The columns in the table can be sorted with the requirement of the project. Heatgrid shows scores assigned by reviewers on individual rubric items for participant. &lt;br /&gt;
&lt;br /&gt;
===What is wrong with it===&lt;br /&gt;
It is called from Instructor's &amp;quot;Assign Grades&amp;quot; function and student's view scores functions. But , there are issues that students are reviews themselves. Question is about Are reviews getting assigned correctly? Assignment of metric is also wrong at some places&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue #2019===&lt;br /&gt;
Questions whether the reviewers are correctly identified.  In one case, a student was shown as reviewing his/her team, which is impossible.  Also write tests so that if this bug occurs again, we will be informed.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current review system implementation, the instructor has the ability to select or deselect the &amp;quot;Allow Self Reviews?&amp;quot; checkbox from the &amp;quot;Review Strategy&amp;quot; tab of the Edit Assignment page. On deselecting this checkbox, a student will not be able to review his/her own work.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following images show how this functionality works currently:&lt;br /&gt;
&lt;br /&gt;
[[File:SelfReviewCheckbox.png|1200px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
[[File:AssignReviewer.png|1800px|thumb|center]]&lt;br /&gt;
The instructor will get the error &amp;quot;You cannot assign this student to review his/her own artifact.&amp;quot; when an attempt to add a student as a reviewer to his/her own assignment is made.&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is disabled, then the reviewer should not be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the &amp;quot;Allow Self Review?&amp;quot; checkbox is enabled, then the reviewer should be able to review their own assignment. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on self-review and grades section. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/_review_strategy.html.erb:- Here, the checkbox of &amp;quot;Allow Self Review?&amp;quot; is written. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Grades helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; spec/controllers/review_mapping_controller.rb:- Adding test cases for checking whether the reviewer can self-review if the &amp;quot;Allow Self Review?&amp;quot; checkkbox is disabled and the vice-versa too. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
===Issue#1869===&lt;br /&gt;
Notes that there is a “metric-1” column in the review report, but it doesn’t say what the metric is. Please figure out what the metric is, and change the column header accordingly.  However, the intent was that eventually an instructor would be allowed to select a metric to be shown on the heatgrid.  So, somewhere in the UI for creating/editing an assignment, there should be a way for the instructor to select a metric from a dropdown list.  You don’t have to add any more metrics to this list other than the one that is currently displayed, just create a mechanism for adding metrics in the future.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
In the current implementation, the columns in the heatgrid table are static. The &amp;quot;metric-1&amp;quot; column in the table represents the count of comments for the respective question which have a word count greater than 10. On hovering over the column name, the correct information is displayed but the name itself does not make the information evident at first glance.&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
The following image captures how the heatgrid is currently being displayed:&lt;br /&gt;
&lt;br /&gt;
[[File:Summary Report.png|1200px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
== Files to be Targeted ==&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/_view_heatgrid.html.erb:- View file for the Heat Grid. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/views/grades/view_team.html.erb:- View file for the Team. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/helpers/grades_helper.rb:- Focussing on the view_heatgrid function and  of the helper file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/controllers/grades_controller.rb:- Focussing on the populate_view_model function of the controller file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; app/models/vm_question_response.rb:- Focussing on the number_of_comments_greater_than_10_words function of the model file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Summary_Report.png&amp;diff=140736</id>
		<title>File:Summary Report.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Summary_Report.png&amp;diff=140736"/>
		<updated>2021-11-04T00:36:10Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: Sdsayani uploaded a new version of File:Summary Report.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:AssignReviewer.png&amp;diff=140735</id>
		<title>File:AssignReviewer.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:AssignReviewer.png&amp;diff=140735"/>
		<updated>2021-11-04T00:35:47Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SelfReviewCheckbox.png&amp;diff=140734</id>
		<title>File:SelfReviewCheckbox.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SelfReviewCheckbox.png&amp;diff=140734"/>
		<updated>2021-11-04T00:35:27Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140643</id>
		<title>CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements&amp;diff=140643"/>
		<updated>2021-11-03T21:11:22Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: Created page with &amp;quot;== Project Background == Peer-review systems like Expertiza utilize a lot of students’ input to determine each other’s performance. At the same time, students learn from t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Project Background ==&lt;br /&gt;
Peer-review systems like Expertiza utilize a lot of students’ input to determine each other’s performance. At the same time, students learn from the reviews they receive to improve their own performance. In order to make this happen, it would be good to have everyone give quality reviews instead of generic ones. Currently, Expertiza has a few classifiers that can detect useful features of review comments, such as whether they contain suggestions. The suggestion-detection algorithm has been coded as a web service, and other detection algorithms, such as problem detection and sentiment analysis, also exist as newer web services. We need to make the UI more intuitive by allowing users to view the feedback of specific review comments and the code needs to be refactored to remove redundancy to follow the DRY principle.&lt;br /&gt;
&lt;br /&gt;
=Issue 1=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
== Files to be Edited ==&lt;br /&gt;
&lt;br /&gt;
=Issue 2=&lt;br /&gt;
== Problem Definition ==&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
=== Control Flow ===&lt;br /&gt;
&lt;br /&gt;
== Refactoring ==&lt;br /&gt;
&lt;br /&gt;
== Files to be Edited ==&lt;br /&gt;
&lt;br /&gt;
== Test Plan == &lt;br /&gt;
&lt;br /&gt;
= Important Links =&lt;br /&gt;
&lt;br /&gt;
= Team =&lt;br /&gt;
&lt;br /&gt;
* Shlok Sayani (sdsayani)&lt;br /&gt;
&lt;br /&gt;
* Hardik Udeshi (hvudeshi)&lt;br /&gt;
&lt;br /&gt;
* Isha Gupta (igupta)&lt;br /&gt;
&lt;br /&gt;
* Manish Shinde (msshinde)&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021&amp;diff=140639</id>
		<title>CSC/ECE 517 Fall 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021&amp;diff=140639"/>
		<updated>2021-11-03T20:58:29Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OSS Projects ==&lt;br /&gt;
&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2117. Refactor questionaires_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2128. Refactor student_quizzes_controller.rb &amp;amp; late_policies_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2129. Refactor auth_controller.rb &amp;amp; password_retrieval_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2132. Add tests cases for review mapping helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2134. Write unit tests for admin_controller.rb and institution_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2138. Auto-generate submission directory names based on assignment]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2142. Improve e-mail notifications]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2133. Write tests for popup_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2120. Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2139. Remove multiple topics at a time]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2131. Improve assessment360_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2121. Refactor suggestion_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2122. Refactor impersonate_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2123. Refactor sign_up_sheet_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2126. Refactor account_request_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2124. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2125. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2127. Refactor teams_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2130. Refactor submitted_content_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2140. Create new late policy successfully and fix Bank link]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2141. OSS project Finklestein: Instructors &amp;amp; Institutions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2144. Refactor delayed mailer and scheduled task]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2147. Role-based reviewing]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2145. OSS Project Beige]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2146. Introduce a Student View for instructors]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - Refactor Evaluation of SQL Queries]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2135. Email notification to reviewers and instructors]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2168. Testing - Reputations]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2021 - E2149. Finish Github metrics integration - Reputations]]&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2166._Testing_-_Scoring_%26_Grades#Description_about_project CSC/ECE 517 Fall 2021 - E2166. Testing - Scoring_and_Grades]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2150._Integrate_suggestion_detection_algorithm#Description_about_project CSC/ECE 517 Fall 2021 - E2150. Integrate suggestion detection algorithm]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2151._Allow_reviewers_to_bid_on_what_to_review CSC/ECE 517 Fall 2021 - E2151. Allow reviewers to bid on what to review]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2152._Revision_planning_tool#Description_about_project CSC/ECE 517 Fall 2021 - E2152. Revision_planning_tool]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2170._Testing_-_Response_Maps#Description_about_project CSC/ECE 517 Fall 2021 - E2170. Testing - Response Maps]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2153._Improving_search_facility_in_Expertiza#Description_about_project CSC/ECE 517 Fall 2021 - E2153. Improving search facility in Expertiza]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2162._Further_refactoring_and_improvement_of_review_mapping_helper CSC/ECE 517 Fall 2021 - E2162. Further refactoring and improvement of review mapping helper]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2165._Fix_teammate-review_view CSC/ECE 517 Fall 2021 - E2165. Fix teammate review view ]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2155._Calibration_submissions_should_be_copied_along_with_calibration_assignments CSC/ECE 517 Fall 2021 - E2155. Calibration submissions should be copied along with calibration assignments]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2148._Completion/Progress_View CSC/ECE 517 Fall 2021 - E2148. Completion/Progress view]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2158._Grading_audit_trail CSC/ECE 517 Fall 2021 - E2158. Grading audit trail ]&lt;br /&gt;
*[https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2159._Expertiza_internationalization CSC/ECE 517 Fall 2021 - E2159. Expertiza internationalization]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2160._Implementing_and_testing_import_export_controllers#Description_about_project CSC/ECE 517 Fall 2021 - E2160. Implementing and testing import and export controllers]&lt;br /&gt;
* [https://expertiza.csc.ncsu.edu/index.php/CSC/ECE_517_Fall_2021_-_E2164._Heatgrid_fixes_and_improvements#Description_about_project CSC/ECE 517 Fall 2021 - E2164. Heatgrid fixes and improvements]&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2139._Remove_multiple_topics_at_a_time&amp;diff=139228</id>
		<title>CSC/ECE 517 Fall 2021 - E2139. Remove multiple topics at a time</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2021_-_E2139._Remove_multiple_topics_at_a_time&amp;diff=139228"/>
		<updated>2021-10-19T23:50:05Z</updated>

		<summary type="html">&lt;p&gt;Sdsayani: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About Expertiza==&lt;br /&gt;
Expertiza is a Ruby on Rails based open source project that allows users to submit a variety of document types, including URLs and wiki pages.&lt;br /&gt;
It allows the instructor to create and customize new or existing assignments as well as a list of topics for which students can sign up.&lt;br /&gt;
Expertiza allows students to form groups to work on various projects and assignments. It also allows students to peer review the work of other students.&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Expertiza has Assignment objects, which represent an assignment that is done by a number of users.  For some assignments, students need to select a topic before submitting work. For deleting a topic, there is a checkbox beside each topic that can be selected and then the instructor or TA can delete the selected topics from the assignment. The feature needs to be tested thoroughly for various scenarios where different kinds of flags for the assignment are checked like staggered deadline, private assignment, micro task assignment. Also, we need to test the feature when all topics are deleted, some topics are deleted and only one topic is deleted. &lt;br /&gt;
&lt;br /&gt;
===Team Members===&lt;br /&gt;
&amp;lt;li&amp;gt; Divyang Doshi &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Hardik Udeshi &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Shlok Sayani &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Files Involved===&lt;br /&gt;
spec/controllers/sign_up_sheet_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
===Running test cases===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
run the command :- rspec spec/controllers/sign_up_sheet_controller_spec.rb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Testing scenarios==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; When the assignment is a microtask and all other flags are False. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Testing deleting all topics for microtask assignment. We test the delete all functionality by creating few topics associated with a microtask assignment and then do a post request on delete_all_selected_topics. We then expect the number of topics related to this assignment should be 0. We also assert that redirect to edit assignment page is successful after deletion of topics.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'delete_all_selected_topics for a microtask assignment and redirects to edit assignment page with single topic selected' do&lt;br /&gt;
      create(:topic, id: 6000, assignment_id: 6000, topic_identifier: 'topic6000')&lt;br /&gt;
      params = {assignment_id: 6000, topic_ids: ['topic6000']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 6000).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/6000/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Testing deleting multiple topics for microtask assignment. We test the delete multiple functionality by creating few topics associated with a microtask assignment and then do a post request on delete_all_selected_topics. We then expect the number of topics related to this assignment should be number of topics created - number of topics deleted. We also assert that redirect to edit assignment page is successful after deletion of topics.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'delete_all_selected_topics for not microtask assignment and redirects to edit assignment page with multiple topic selected' do&lt;br /&gt;
      create(:topic, id: 6000, assignment_id: 7000, topic_identifier: 'topic6000')&lt;br /&gt;
      create(:topic, id: 7000, assignment_id: 7000, topic_identifier: 'topic7000')&lt;br /&gt;
      create(:topic, id: 8000, assignment_id: 7000, topic_identifier: 'topic8000')&lt;br /&gt;
      params = {assignment_id: 7000, topic_ids: ['topic6000', 'topic7000']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 7000).count&lt;br /&gt;
      expect(topics_exist).to be_eql 1&lt;br /&gt;
      expect(response).to redirect_to('/assignments/7000/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 7000, topic_ids: ['topic8000']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 7000).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/7000/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; When the assignment is a staggered deadline and microtask and private flags are False. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting single topic of staggered deadline assignments. We first create a topic that is to be deleted afterward. Then, assign this topic to a staggered deadline assignment. Then, we pass this topic to delete_all_selected_topics. As of now, this topic needs to be deleted by the method, we fire a query to check the topic with the same topic_id exists in the database or not. If it is successfully deleted, the count should be returned 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'create topic and delete_all_selected_topics for a staggered deadline assignment and redirects to edit assignment page with single topic selected' do&lt;br /&gt;
      create(:topic, id: 40, assignment_id: 40, topic_identifier: 'E1733')&lt;br /&gt;
      params = {assignment_id: 40, topic_ids: ['E1733']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 40).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/40/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting multiple topics of staggered deadline assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a staggered deadline assignment. Then, we pass these topics multiple at a time to the delete_all_selected_topics method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with the topic remaining by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'create topic and delete_all_selected_topics for a staggered deadline assignment and redirects to edit assignment page with multiple topic selected' do&lt;br /&gt;
      create(:topic, id: 30, assignment_id: 40, topic_identifier: 'E1735')&lt;br /&gt;
      create(:topic, id: 40, assignment_id: 40, topic_identifier: 'E1736')&lt;br /&gt;
      create(:topic, id: 50, assignment_id: 40, topic_identifier: 'E1737')&lt;br /&gt;
      create(:topic, id: 60, assignment_id: 40, topic_identifier: 'E1738')&lt;br /&gt;
      create(:topic, id: 70, assignment_id: 40, topic_identifier: 'E1739')&lt;br /&gt;
      params = {assignment_id: 40, topic_ids: ['E1735', 'E1736']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 40).count&lt;br /&gt;
      expect(topics_exist).to be_eql 3&lt;br /&gt;
      expect(response).to redirect_to('/assignments/40/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 40, topic_ids: ['E1737', 'E1738']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 40).count&lt;br /&gt;
      expect(topics_exist).to be_eql 1&lt;br /&gt;
      expect(response).to redirect_to('/assignments/40/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 40, topic_ids: ['E1739']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 40).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/40/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting all topics of staggered deadline assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a staggered deadline assignment. Then, we pass these topics all at a time to the delete_all_topics_for_assignment method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'deletes all topics for the staggered deadline assignment and redirects to edit assignment page' do&lt;br /&gt;
      create(:topic, id: 30, assignment_id: 40, topic_identifier: 'E1740')&lt;br /&gt;
      create(:topic, id: 40, assignment_id: 40, topic_identifier: 'E1741')&lt;br /&gt;
      create(:topic, id: 50, assignment_id: 40, topic_identifier: 'E1742')&lt;br /&gt;
      params = {assignment_id: 40}&lt;br /&gt;
      post :delete_all_topics_for_assignment, params&lt;br /&gt;
      topics_exist = SignUpTopic.where(assignment_id: 40).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(flash[:success]).to eq('All topics have been deleted successfully.')&lt;br /&gt;
      expect(response).to redirect_to('/assignments/40/edit')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; When the assignment is a non-staggered deadline and microtask and private flags are True. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting single topic of non-staggered deadline assignments. We first create a topic that is to be deleted afterward. Then, assign this topic to a non-staggered deadline assignment. Then, we pass this topic to delete_all_selected_topics. As of now, this topic needs to be deleted by the method, we fire a query to check the topic with the same topic_id exists in the database or not. If it is successfully deleted, the count should be returned 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'create topic and delete_all_selected_topics for not a staggered deadline assignment and redirects to edit assignment page with single topic selected' do&lt;br /&gt;
      create(:topic, id: 30, assignment_id: 30, topic_identifier: 'E1734')&lt;br /&gt;
      params = {assignment_id: 30, topic_ids: ['E1734']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 30).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/30/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting multiple topics of non-staggered deadline assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a non-staggered deadline assignment. Then, we pass these topics multiple at a time to the delete_all_selected_topics method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with the topic remaining by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'create topic and delete_all_selected_topics for not a staggered deadline assignment and redirects to edit assignment page with multiple topic selected' do&lt;br /&gt;
      create(:topic, id: 30, assignment_id: 30, topic_identifier: 'E1735')&lt;br /&gt;
      create(:topic, id: 40, assignment_id: 30, topic_identifier: 'E1736')&lt;br /&gt;
      create(:topic, id: 50, assignment_id: 30, topic_identifier: 'E1737')&lt;br /&gt;
      create(:topic, id: 60, assignment_id: 30, topic_identifier: 'E1738')&lt;br /&gt;
      create(:topic, id: 70, assignment_id: 30, topic_identifier: 'E1739')&lt;br /&gt;
      params = {assignment_id: 30, topic_ids: ['E1735', 'E1736']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 30).count&lt;br /&gt;
      expect(topics_exist).to be_eql 3&lt;br /&gt;
      expect(response).to redirect_to('/assignments/30/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 30, topic_ids: ['E1737', 'E1738']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 30).count&lt;br /&gt;
      expect(topics_exist).to be_eql 1&lt;br /&gt;
      expect(response).to redirect_to('/assignments/30/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 30, topic_ids: ['E1739']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 30).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/30/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting all topics of non-staggered deadline assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a non-staggered deadline assignment. Then, we pass these topics all at a time to the delete_all_topics_for_assignment method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'deletes all topics for the non-staggered deadline assignment and redirects to edit assignment page' do&lt;br /&gt;
      create(:topic, id: 30, assignment_id: 30, topic_identifier: 'E1740')&lt;br /&gt;
      create(:topic, id: 40, assignment_id: 30, topic_identifier: 'E1741')&lt;br /&gt;
      create(:topic, id: 50, assignment_id: 30, topic_identifier: 'E1742')&lt;br /&gt;
      params = {assignment_id: 30}&lt;br /&gt;
      post :delete_all_topics_for_assignment, params&lt;br /&gt;
      topics_exist = SignUpTopic.where(assignment_id: 30).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(flash[:success]).to eq('All topics have been deleted successfully.')&lt;br /&gt;
      expect(response).to redirect_to('/assignments/30/edit')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; When the assignment is private and other flags are False. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Test deleting a single topic in private assignments. We first create a topic that is to be deleted afterwards. Then, assign this topic to a private assignment. Then, we pass this topic to delete_all_selected_topics. As of now, this topic needs to be deleted by the method, we fire a query to check the topic with the same topic_id exists in the database or not. If it is successfully deleted, the count should be returned 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'delete_all_selected_topics for a private assignment and redirects to edit assignment page with single topic selected' do&lt;br /&gt;
      create(:topic, id: 2, assignment_id: 2, topic_identifier: 'topic2')&lt;br /&gt;
      params = {assignment_id: 2, topic_ids: ['topic2']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 2).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/2/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting multiple topics of private assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a private assignment. Then, we pass these topics multiple at a time to the delete_all_selected_topics method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with the topic remaining by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'delete_all_selected_topics for a private assignment and redirects to edit assignment page with multiple topic selected' do&lt;br /&gt;
      create(:topic, id: 2, assignment_id: 2, topic_identifier: 'topic2')&lt;br /&gt;
      create(:topic, id: 3, assignment_id: 2, topic_identifier: 'topic3')&lt;br /&gt;
      create(:topic, id: 4, assignment_id: 2, topic_identifier: 'topic4')&lt;br /&gt;
      params = {assignment_id: 2, topic_ids: ['topic2', 'topic3']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 2).count&lt;br /&gt;
      expect(topics_exist).to be_eql 1&lt;br /&gt;
      expect(response).to redirect_to('/assignments/2/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 2, topic_ids: ['topic4']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 2).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/2/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting all topics of private assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a private assignment. Then, we pass these topics all at a time to the delete_all_topics_for_assignment method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'deletes all topics for the private assignment and redirects to edit assignment page' do&lt;br /&gt;
      create(:topic, id: 2, assignment_id: 2)&lt;br /&gt;
      create(:topic, id: 3, assignment_id: 2)&lt;br /&gt;
      params = {assignment_id: 2}&lt;br /&gt;
      post :delete_all_topics_for_assignment, params.merge(format: :html)&lt;br /&gt;
      topics_exist = SignUpTopic.where(assignment_id: 2).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(flash[:success]).to eq('All topics have been deleted successfully.')&lt;br /&gt;
      expect(response).to redirect_to('/assignments/2/edit')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; When the assignment is non-private and other flags are True. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting single topic of non-private assignments. We first create a topic that is to be deleted afterward. Then, assign this topic to a non-private assignment. Then, we pass this topic to delete_all_selected_topics. As of now, this topic needs to be deleted by the method, we fire a query to check the topic with the same topic_id exists in the database or not. If it is successfully deleted, the count should be returned 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'delete_all_selected_topics for a non private assignment and redirects to edit assignment page with single topic selected' do&lt;br /&gt;
      create(:topic, id: 2, assignment_id: 3, topic_identifier: 'topic2')&lt;br /&gt;
      params = {assignment_id: 3, topic_ids: ['topic2']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 3).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/3/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting multiple topics of non-private assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a non-private assignment. Then, we pass these topics multiple at a time to the delete_all_selected_topics method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with the topic remaining by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'delete_all_selected_topics for a non private assignment and redirects to edit assignment page with multiple topic selected' do&lt;br /&gt;
      create(:topic, id: 2, assignment_id: 3, topic_identifier: 'topic2')&lt;br /&gt;
      create(:topic, id: 3, assignment_id: 3, topic_identifier: 'topic3')&lt;br /&gt;
      create(:topic, id: 8, assignment_id: 3, topic_identifier: 'topic4')&lt;br /&gt;
      params = {assignment_id: 3, topic_ids: ['topic2', 'topic3']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 3).count&lt;br /&gt;
      expect(topics_exist).to be_eql 1&lt;br /&gt;
      expect(response).to redirect_to('/assignments/3/edit#tabs-2')&lt;br /&gt;
&lt;br /&gt;
      params = {assignment_id: 3, topic_ids: ['topic4']}&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;
      topics_exist = SignUpTopic.where(assignment_id: 3).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(response).to redirect_to('/assignments/3/edit#tabs-2')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Deleting all topics of non-private assignments. We first create some topics that are to be deleted afterward. Then, assign these topics to a non-private assignment. Then, we pass these topics all at a time to the delete_all_topics_for_assignment method. As of now, these topics need to be deleted by the method, we fire a query to check the topics with the same topic_ids exist in the database or not. If it is successfully deleted, the count should be returned with 0 by the query. We also assert that redirect to edit assignment page is successful after deletion of topics. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    it 'deletes all topics for non private assignment and redirects to edit assignment page' do&lt;br /&gt;
      create(:topic, id: 2, assignment_id: 3)&lt;br /&gt;
      create(:topic, id: 3, assignment_id: 3)&lt;br /&gt;
      params = {assignment_id: 3}&lt;br /&gt;
      post :delete_all_topics_for_assignment, params.merge(format: :html)&lt;br /&gt;
      topics_exist = SignUpTopic.where(assignment_id: 3).count&lt;br /&gt;
      expect(topics_exist).to be_eql 0&lt;br /&gt;
      expect(flash[:success]).to eq('All topics have been deleted successfully.')&lt;br /&gt;
      expect(response).to redirect_to('/assignments/3/edit')&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
&lt;br /&gt;
==Repository Link==&lt;br /&gt;
&lt;br /&gt;
https://github.com/hvudeshi/expertiza/tree/beta&lt;/div&gt;</summary>
		<author><name>Sdsayani</name></author>
	</entry>
</feed>