<?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=Dmmehta2</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=Dmmehta2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Dmmehta2"/>
	<updated>2026-05-16T08:35:12Z</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_2022_-_E2278._Improve_assessment360_controller&amp;diff=147263</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147263"/>
		<updated>2022-12-07T04:07:01Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
====Solution====&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
====Code changes====&lt;br /&gt;
&lt;br /&gt;
GitHub Commit: https://github.com/expertiza/expertiza/pull/2490/commits/dc9a3ea8b88809c1c3bcb4a3e4b900d1a1eced53&lt;br /&gt;
&lt;br /&gt;
'''Controller code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File:assessment_360_all_students_all_reviews_controller_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* In the controller we introduced the hashmaps meta_review_exists, teammate_review_exists, which store boolean values for particular assignments indicating if at least one data point exists for that particular column or not. These values are utilized in the UI, to determine whether or not these columns should be displayed or not.&lt;br /&gt;
&lt;br /&gt;
'''UI code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_students_all_reviews_html_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Checkboxes have been introduced here to allow users to hide/unhide the columns.&lt;br /&gt;
&lt;br /&gt;
* Here, the variables from controller are used to conditionally check whether or not a particular column must be displayed or not.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_students_all_reviews_js_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* The javascript is used to listen to checkbox change events and dynamically modify the view.&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
====Solution====&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
====Code changes====&lt;br /&gt;
&lt;br /&gt;
GitHub Commit: https://github.com/expertiza/expertiza/pull/2490/commits/884c5a3eb9323b9a1b5744755dbbc064f7fcb00d&lt;br /&gt;
&lt;br /&gt;
'''Controller code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_controller_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* In the controller we introduced the hashmaps topic_exists, assignment_grade_exists and peer_review_score_exists, which store boolean values for particular assignments indicating if at least one data point exists for that particular column or not. These values are utilized in the UI, to determine whether or not these columns should be displayed or not.&lt;br /&gt;
&lt;br /&gt;
* To calculate the average peer score, the objects total_peer_score and total_peer_reviews are being utilized.&lt;br /&gt;
&lt;br /&gt;
'''UI code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_html_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Checkboxes have been introduced here to allow users to hide/unhide the columns.&lt;br /&gt;
&lt;br /&gt;
* Here, the variables from controller are used to conditionally check whether or not a particular column must be displayed or not.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_js_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* The javascript is used to listen to checkbox change events and dynamically modify the view.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;br /&gt;
#[https://youtu.be/iOz4lAbyWnQ Demo Video]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147262</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147262"/>
		<updated>2022-12-07T04:05:54Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Add code changes for all_students_all_reviews&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
====Solution====&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
====Code changes====&lt;br /&gt;
&lt;br /&gt;
GitHub Commit: https://github.com/expertiza/expertiza/pull/2490/commits/dc9a3ea8b88809c1c3bcb4a3e4b900d1a1eced53&lt;br /&gt;
&lt;br /&gt;
'''Controller code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File:assessment_360_all_students_all_reviews_controller_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* In the controller we introduced the hashmaps meta_review_exists, teammate_review_exists, which store boolean values for particular assignments indicating if at least one data point exists for that particular column or not. These values are utilized in the UI, to determine whether or not these columns should be displayed or not.&lt;br /&gt;
&lt;br /&gt;
'''UI code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_students_all_reviews_html_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Checkboxes have been introduced here to allow users to hide/unhide the columns.&lt;br /&gt;
&lt;br /&gt;
* Here, the variables from controller are used to conditionally check whether or not a particular column must be displayed or not.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_students_all_reviews_js_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* The javascript is used to listen to checkbox change events and dynamically modify the view.&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
====Solution====&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
====Code changes====&lt;br /&gt;
&lt;br /&gt;
GitHub Commit: https://github.com/expertiza/expertiza/pull/2490/commits/884c5a3eb9323b9a1b5744755dbbc064f7fcb00d&lt;br /&gt;
&lt;br /&gt;
'''Controller code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_controller_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* In the controller we introduced the hashmaps topic_exists, assignment_grade_exists and peer_review_score_exists, which store boolean values for particular assignments indicating if at least one data point exists for that particular column or not. These values are utilized in the UI, to determine whether or not these columns should be displayed or not.&lt;br /&gt;
&lt;br /&gt;
* To calculate the average peer score, the objects total_peer_score and total_peer_reviews are being utilized.&lt;br /&gt;
&lt;br /&gt;
'''UI code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_html_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Checkboxes have been introduced here to allow users to hide/unhide the columns.&lt;br /&gt;
&lt;br /&gt;
* Here, the variables from controller are used to conditionally check whether or not a particular column must be displayed or not.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_js_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* The javascript is used to listen to checkbox change events and dynamically modify the view.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;br /&gt;
#[https://youtu.be/iOz4lAbyWnQ Demo Video]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_students_all_reviews_js_code.png&amp;diff=147261</id>
		<title>File:Assessment 360 all students all reviews js code.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_students_all_reviews_js_code.png&amp;diff=147261"/>
		<updated>2022-12-07T04:05:06Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_students_all_reviews_html_code.png&amp;diff=147260</id>
		<title>File:Assessment 360 all students all reviews html code.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_students_all_reviews_html_code.png&amp;diff=147260"/>
		<updated>2022-12-07T04:03:58Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_students_all_reviews_controller_code.png&amp;diff=147259</id>
		<title>File:Assessment 360 all students all reviews controller code.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_students_all_reviews_controller_code.png&amp;diff=147259"/>
		<updated>2022-12-07T04:03:06Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147258</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147258"/>
		<updated>2022-12-07T03:46:22Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
====Solution====&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
====Code changes====&lt;br /&gt;
&lt;br /&gt;
GitHub Commit: https://github.com/expertiza/expertiza/pull/2490/commits/884c5a3eb9323b9a1b5744755dbbc064f7fcb00d&lt;br /&gt;
&lt;br /&gt;
'''Controller code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_controller_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* In the controller we introduced the hashmaps topic_exists, assignment_grade_exists and peer_review_score_exists, which store boolean values for particular assignments indicating if at least one data point exists for that particular column or not. These values are utilized in the UI, to determine whether or not these columns should be displayed or not.&lt;br /&gt;
&lt;br /&gt;
* To calculate the average peer score, the objects total_peer_score and total_peer_reviews are being utilized.&lt;br /&gt;
&lt;br /&gt;
'''UI code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_html_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Checkboxes have been introduced here to allow users to hide/unhide the columns.&lt;br /&gt;
&lt;br /&gt;
* Here, the variables from controller are used to conditionally check whether or not a particular column must be displayed or not.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_js_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* The javascript is used to listen to checkbox change events and dynamically modify the view.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;br /&gt;
#[https://youtu.be/iOz4lAbyWnQ Demo Video]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147257</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147257"/>
		<updated>2022-12-07T03:44:47Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Add code changes for course_student_grade_summary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
====Code Changes====&lt;br /&gt;
&lt;br /&gt;
GitHub Commit: https://github.com/expertiza/expertiza/pull/2490/commits/884c5a3eb9323b9a1b5744755dbbc064f7fcb00d&lt;br /&gt;
&lt;br /&gt;
'''Controller code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_controller_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* In the controller we introduced the hashmaps topic_exists, assignment_grade_exists and peer_review_score_exists, which store boolean values for particular assignments indicating if at least one data point exists for that particular column or not. These values are utilized in the UI, to determine whether or not these columns should be displayed or not.&lt;br /&gt;
&lt;br /&gt;
* To calculate the average peer score, the objects total_peer_score and total_peer_reviews are being utilized.&lt;br /&gt;
&lt;br /&gt;
'''UI code updates'''&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_html_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Checkboxes have been introduced here to allow users to hide/unhide the columns.&lt;br /&gt;
&lt;br /&gt;
* Here, the variables from controller are used to conditionally check whether or not a particular column must be displayed or not.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_js_code.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* The javascript is used to listen to checkbox change events and dynamically modify the view.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;br /&gt;
#[https://youtu.be/iOz4lAbyWnQ Demo Video]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_js_code.png&amp;diff=147256</id>
		<title>File:Assessment 360 course student grade js code.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_js_code.png&amp;diff=147256"/>
		<updated>2022-12-07T03:43:31Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_html_code.png&amp;diff=147255</id>
		<title>File:Assessment 360 course student grade html code.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_html_code.png&amp;diff=147255"/>
		<updated>2022-12-07T03:40:51Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_controller_code.png&amp;diff=147254</id>
		<title>File:Assessment 360 course student grade controller code.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_controller_code.png&amp;diff=147254"/>
		<updated>2022-12-07T03:35:50Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147212</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147212"/>
		<updated>2022-12-06T03:21:32Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;br /&gt;
#[https://youtu.be/iOz4lAbyWnQ Demo Video]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147120</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147120"/>
		<updated>2022-12-05T22:27:28Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147119</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147119"/>
		<updated>2022-12-05T22:27:13Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Add references&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/OODD-OSS/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website]&lt;br /&gt;
#[http://yoururl.tech/expertiza  Demo link] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#[https://github.com/expertiza/expertiza/pull/2490 PR Link]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147118</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147118"/>
		<updated>2022-12-05T22:20:56Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|700px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|700px]]&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147117</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147117"/>
		<updated>2022-12-05T22:20:01Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* When the peer reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_hidden.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @team_members_count&lt;br /&gt;
* Include appropriate comments wherever applicable&lt;br /&gt;
&lt;br /&gt;
The above changes have been implemented as part of the project.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that only those columns are visible with at least one data point.&lt;br /&gt;
&lt;br /&gt;
4. Verify empty data is shown as '--'&lt;br /&gt;
&lt;br /&gt;
5. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
6. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores show up as '--'&lt;br /&gt;
&lt;br /&gt;
8. Verify that average peer score column is visible and has correct values.&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average.&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_hidden.png&amp;diff=147116</id>
		<title>File:Assessment 360 course student grade hidden.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_hidden.png&amp;diff=147116"/>
		<updated>2022-12-05T22:16:26Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147115</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147115"/>
		<updated>2022-12-05T22:14:47Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147114</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147114"/>
		<updated>2022-12-05T22:14:22Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Missing average peer review column&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_expected.png&amp;diff=147113</id>
		<title>File:Assessment 360 course student grade expected.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_expected.png&amp;diff=147113"/>
		<updated>2022-12-05T22:13:27Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Dmmehta2 uploaded a new version of File:Assessment 360 course student grade expected.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_current.png&amp;diff=147111</id>
		<title>File:Assessment 360 course student grade current.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_current.png&amp;diff=147111"/>
		<updated>2022-12-05T22:11:55Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Dmmehta2 uploaded a new version of File:Assessment 360 course student grade current.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147110</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147110"/>
		<updated>2022-12-05T22:10:34Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|700px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147109</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147109"/>
		<updated>2022-12-05T22:10:10Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147108</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147108"/>
		<updated>2022-12-05T22:09:47Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_current_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_current_all_students_all_reviews.png&amp;diff=147107</id>
		<title>File:Assessment 360 current all students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_current_all_students_all_reviews.png&amp;diff=147107"/>
		<updated>2022-12-05T22:09:34Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_predicted_all_students_all_reviews.png&amp;diff=147106</id>
		<title>File:Assessment 360 predicted all students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_predicted_all_students_all_reviews.png&amp;diff=147106"/>
		<updated>2022-12-05T22:08:22Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Dmmehta2 uploaded a new version of File:Assessment 360 predicted all students all reviews.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_predicted_all_students_all_reviews.png&amp;diff=147105</id>
		<title>File:Assessment 360 predicted all students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_predicted_all_students_all_reviews.png&amp;diff=147105"/>
		<updated>2022-12-05T22:07:57Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Dmmehta2 uploaded a new version of File:Assessment 360 predicted all students all reviews.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147104</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147104"/>
		<updated>2022-12-05T22:06:42Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the existing implementation of the assessment360 controller and the updates made to it as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester. Additionally it provides an aggregate of these review scores as well.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its topic, peer score and instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows columns even if all the data in those columns is nil. Additionally, the empty data is just shown as blank and thus leads to confusion.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score. Additionally, the same issue of columns being shown even if all data is empty also exists.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see the updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* When the meta reviews checkbox is unchecked:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_hidden_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_hidden_all_students_all_reviews.png&amp;diff=147103</id>
		<title>File:Assessment 360 hidden all students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_hidden_all_students_all_reviews.png&amp;diff=147103"/>
		<updated>2022-12-05T22:06:21Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_predicted_all_students_all_reviews.png&amp;diff=147102</id>
		<title>File:Assessment 360 predicted all students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_predicted_all_students_all_reviews.png&amp;diff=147102"/>
		<updated>2022-12-05T22:05:15Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Dmmehta2 uploaded a new version of File:Assessment 360 predicted all students all reviews.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_student_all_reviews.png&amp;diff=147101</id>
		<title>File:Assessment 360 all student all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_all_student_all_reviews.png&amp;diff=147101"/>
		<updated>2022-12-05T22:03:38Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Dmmehta2 uploaded a new version of File:Assessment 360 all student all reviews.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the screenshot of current implementation of assessment_360 all_student_all_reviews view&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147065</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=147065"/>
		<updated>2022-12-05T15:00:52Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its peer score and its instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Problems &amp;amp; Solutions==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
Following problems were identified in this view:&lt;br /&gt;
&lt;br /&gt;
* Empty rows just show as blank&lt;br /&gt;
* Column is visible even if no data is present&lt;br /&gt;
* No option to filter columns to allow users to only see particular columns&lt;br /&gt;
&lt;br /&gt;
Below, you can see updates made to the view to fix the above identified problems:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146756</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146756"/>
		<updated>2022-11-19T00:04:02Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its peer score and its instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_class_diagram.png|800px]]&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_class_diagram.png&amp;diff=146755</id>
		<title>File:Assessment 360 class diagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_class_diagram.png&amp;diff=146755"/>
		<updated>2022-11-19T00:03:07Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146748</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146748"/>
		<updated>2022-11-18T18:51:00Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its peer score and its instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller - Ensure design principles &amp;amp; patterns===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146747</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146747"/>
		<updated>2022-11-17T00:48:51Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester.&lt;br /&gt;
&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its peer score and its instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146746</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146746"/>
		<updated>2022-11-17T00:48:19Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: Updates based on reviews received&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
The assessment360 controller is mainly responsible for the following two views:&lt;br /&gt;
&lt;br /&gt;
1) all_students_all_reviews: This view displays all the meta reviews and the teammate reviews of students for all the programs they have worked on in that semester.&lt;br /&gt;
2) course_student_grade_summary: This view displays the summary of all the programs that students have worked on, its peer score and its instructor grade. This includes the total and average of these scores as well.&lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. In addition to this, the plan is to ensure the SOLID design principles are followed and code will be refactored accordingly.&lt;br /&gt;
&lt;br /&gt;
Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file - Ensuring Single Responsibility design principle&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146705</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146705"/>
		<updated>2022-11-16T03:37:54Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problem statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146655</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146655"/>
		<updated>2022-11-15T22:08:50Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: /* Manual Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146654</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146654"/>
		<updated>2022-11-15T22:07:42Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: /* Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions that are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases, etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the front end, tests should be in place to ensure that the computations happen in their specific order and that enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student getting 0 because he/she failed to attempt vs a student getting 0 because he/she hasn't attempted yet. In the first case, we include it while calculating the average while in the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
2. Go to the all_students_all_reviews page&lt;br /&gt;
3. Verify that either teammate or meta-reviews are visible on the screen&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
7. Verify that unattempted scores aren't counted toward average&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146653</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146653"/>
		<updated>2022-11-15T22:06:35Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
The following test plan has been identified to ensure that the above changes don't break the existing system and the new code being introduced is thoroughly tested.&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
The primary goal of automated testing would be to increase code coverage by including new test cases and removing redundant and unnecessary tests.&lt;br /&gt;
&lt;br /&gt;
1. Focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Since most of the work in this module is computations in the back and rendering data in the frontend, tests should be in place to ensure that the computations happen in their specific order and enough test cases are present.&lt;br /&gt;
&lt;br /&gt;
3. Below edge cases are currently identified that will be tested:&lt;br /&gt;
&lt;br /&gt;
* Differentiate between a student gettin 0 because he/she failed to attempt vs student getting 0 because he/she hasn't attempted yet. The first case we include while calculating average while the second case we don't.&lt;br /&gt;
* If an unauthorized user tries to access the page, they should be redirected to the home page.&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following tests have been identified to ensure that the changes made work as anticipated:&lt;br /&gt;
&lt;br /&gt;
1. Open any course&lt;br /&gt;
2. Go to all_students_all_reviews page&lt;br /&gt;
3. Verify that either of teammate or meta reviews are visible on the screen&lt;br /&gt;
4. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;br /&gt;
5. Go to course_student_grade_summary&lt;br /&gt;
6. Verify that unattempted scores show as 0&lt;br /&gt;
7. Verify that unattempted scores aren't counted towards average&lt;br /&gt;
8. Use checkboxes at the top of the screen and ensure columns are hidden or visible based on the selected checkboxes&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146647</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146647"/>
		<updated>2022-11-15T21:33:24Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI-focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open-source project based on the [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides functionality that allows instructors to get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta-reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta-reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
The current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for the easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor-assigned scores.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above-mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead, they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146646</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146646"/>
		<updated>2022-11-15T21:31:15Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
Current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
Current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding of appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Manual Testing ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146645</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146645"/>
		<updated>2022-11-15T21:30:27Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; all_students_all_reviews view===&lt;br /&gt;
&lt;br /&gt;
Current implementation of this view&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===assessment controller &amp;gt; course_student_grade_summary===&lt;br /&gt;
&lt;br /&gt;
Current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Include checkboxes=== &lt;br /&gt;
&lt;br /&gt;
Users should be able to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Improve Performance===&lt;br /&gt;
&lt;br /&gt;
Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
===Refactor assessment360_controller===&lt;br /&gt;
&lt;br /&gt;
Adding of appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Testing from UI ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;br /&gt;
&lt;br /&gt;
=== Code Coverage ===&lt;br /&gt;
&lt;br /&gt;
[[File:E2219_codecov.png|800px]]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146644</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146644"/>
		<updated>2022-11-15T21:26:03Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
1) assessment controller &amp;gt; all_students_all_reviews view, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) assessment controller &amp;gt; course_student_grade_summary, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Include checkboxes for users to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
5) Refactor assessment360_controller, by adding appropriate comments and updating method/variable names wherever applicable. Currently following changes are identified:&lt;br /&gt;
&lt;br /&gt;
* Update the variable name @teamed_count to @teammate_count&lt;br /&gt;
* Include comments for uncommented methods including assignment_grade_summary, insure_existence_of, format_topic, format_score&lt;br /&gt;
* Move helper methods format_topic, format_score out of the controller file to the controller_helper file&lt;br /&gt;
&lt;br /&gt;
While the above work has been identified and planned, more scope could be included as and when the team starts implementing the above changes.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Testing from UI ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;br /&gt;
&lt;br /&gt;
=== Code Coverage ===&lt;br /&gt;
&lt;br /&gt;
[[File:E2219_codecov.png|800px]]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146643</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146643"/>
		<updated>2022-11-15T21:18:56Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
1) assessment controller &amp;gt; all_students_all_reviews view, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) assessment controller &amp;gt; course_student_grade_summary, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Include checkboxes for users to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Implement [https://github.com/flyerhzm/bullet bullet gem] to reduce database queries and increase the application performance.&lt;br /&gt;
&lt;br /&gt;
5) Refactor assessment360_controller, by adding appropriate comments and updating method/variable names wherever applicable.&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Testing from UI ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;br /&gt;
&lt;br /&gt;
=== Code Coverage ===&lt;br /&gt;
&lt;br /&gt;
[[File:E2219_codecov.png|800px]]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146641</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146641"/>
		<updated>2022-11-15T21:13:22Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
1) assessment controller &amp;gt; all_students_all_reviews view, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) assessment controller &amp;gt; course_student_grade_summary, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Include checkboxes for users to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, &lt;br /&gt;
instead they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Testing from UI ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;br /&gt;
&lt;br /&gt;
=== Code Coverage ===&lt;br /&gt;
&lt;br /&gt;
[[File:E2219_codecov.png|800px]]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146639</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146639"/>
		<updated>2022-11-15T21:12:36Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
1) assessment controller &amp;gt; all_students_all_reviews view, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) assessment controller &amp;gt; course_student_grade_summary, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Include checkboxes for users to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages.&lt;br /&gt;
&lt;br /&gt;
Find an example view of how the page is expected to look after implementing the checkbox filter:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected_1.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE:&lt;br /&gt;
Please note that the above expected UI views aren't finalized, instead they are just a prediction of how the pages might look after the changes are implemented.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Testing from UI ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;br /&gt;
&lt;br /&gt;
=== Code Coverage ===&lt;br /&gt;
&lt;br /&gt;
[[File:E2219_codecov.png|800px]]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_expected_1.png&amp;diff=146638</id>
		<title>File:Assessment 360 course student grade expected 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_expected_1.png&amp;diff=146638"/>
		<updated>2022-11-15T21:11:53Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146628</id>
		<title>CSC/ECE 517 Fall 2022 - E2278. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2022_-_E2278._Improve_assessment360_controller&amp;diff=146628"/>
		<updated>2022-11-15T21:03:24Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the design document for Expertiza project E2278 Improve assessment360_controller.rb. This document describes the current implementation of the assessment360 controller and the expected design changes as part of this project which is primarily UI focused.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework.&lt;br /&gt;
Expertiza provides a functionality that allows instructors get a full or 360-degree overview of a course they teach that includes all students in the course, all assignments, and the scores of every student in each assignment, averages, and final scores as well. This feature is supported by the assessment360 controller. &lt;br /&gt;
&lt;br /&gt;
==Problems statement==&lt;br /&gt;
&lt;br /&gt;
* In the assessment controller &amp;gt; all_students_all_reviews view, it shows a summary including both meta-reviews and teammate reviews and this makes the UI a bit complicated. Thus, this needs to be updated in a way that, the user has the option to select a filter, to either see meta-reviews or teammate reviews but not both at the same time. This will eventually simplify the UI and make it easier to read through.&lt;br /&gt;
&lt;br /&gt;
* Currently on the summary page, if the student hasn't attempted a quiz or they are yet to receive a grade, the view shows that row as '-'. Instead, it is preferable to depict it as '0', this will aid in the better calculation of total scores. One thing to ensure here is, while calculating the average such values must not be considered since the student hasn't attempted it yet, and it would be inaccurate to consider that value while calculating the average for the same.&lt;br /&gt;
&lt;br /&gt;
* Currently the assessment controller &amp;gt; course_student_grade_summary view is missing the columns for average peer review score and average instructor assigned score. Thus, the view should be updated to reflect these scores as well.&lt;br /&gt;
&lt;br /&gt;
* Currently both the pages all_students_all_reviews &amp;amp; course_student_grade_summary show all columns by default and the user has no control to hide/unhide these columns as per their needs. Thus, a checkbox list of columns must be provided for users to select/unselect from and allow users to only see the columns of their interest.&lt;br /&gt;
&lt;br /&gt;
* DB access must be minimized, and this should be implemented with the use of bullet gem.&lt;br /&gt;
&lt;br /&gt;
* Basic refactoring changes need to be implemented, like updating the variable name @teamed_count and using a more appropriate variable name.&lt;br /&gt;
&lt;br /&gt;
==Planned work==&lt;br /&gt;
&lt;br /&gt;
1) assessment controller &amp;gt; all_students_all_reviews view, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_all_student_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
The plan is to update this view, to take in a parameter in the controller function and based on that parameter, show either the meta reviews or teammate reviews column. &lt;br /&gt;
&lt;br /&gt;
Below, you can see the expected UI after the changes:&lt;br /&gt;
&lt;br /&gt;
* Only Teammate Reviews:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_predicted_all_students_all_reviews.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Similarly the above view will be visible if the parameter mentioned meta reviews, the only difference will be the data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) assessment controller &amp;gt; course_student_grade_summary, below you can find the screenshot of current implementation of this view:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_current.png|800px]]&lt;br /&gt;
&lt;br /&gt;
* Replace '-' with '0' for easier average calculation&lt;br /&gt;
&lt;br /&gt;
* Include columns for average peer review scores and average instructor assigned score.&lt;br /&gt;
&lt;br /&gt;
Find below the expected UI after the above changes are implemented:&lt;br /&gt;
&lt;br /&gt;
[[File: assessment_360_course_student_grade_expected.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Include checkboxes for users to hide/unhide any columns as per their interest. This will be included in both the above mentioned pages&lt;br /&gt;
&lt;br /&gt;
== Test Plan==&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing using RSPEC ===&lt;br /&gt;
Please note that we have removed several older tests which tested functions that are now private and inaccessible outside the controller class itself. However, the methods that call these private functions are still tested and tests are passing successfully.&lt;br /&gt;
&lt;br /&gt;
1. After refactoring, most of our new test cases focus on functions which are the core of the controller - covering important aspects like who accesses the page, checking permissions for the page, how the page behaves on edge cases etc.&lt;br /&gt;
&lt;br /&gt;
2. Using RSpec, the test cases cover various scenarios and tests each scenario in depth. &lt;br /&gt;
Eg, for access control, we check the access for all roles for a user comprehensively to ensure that only people with permissions can view the page. &lt;br /&gt;
&lt;br /&gt;
3. Since most of the work in this module is computations in the back and rendering data in the frontend, we've ensured that the computations happen in their specific order and enough test cases are present for edge cases. &lt;br /&gt;
&lt;br /&gt;
4. For backend computations, we've covered lot of edge cases like no participants to a course, when there are no reviews made by a participant, when assignment doesn't exists, insure existence_of being called before executing index page etc. &lt;br /&gt;
&lt;br /&gt;
5. For frontend, we've covered cases like formatting of the data in the page, null dataset, score being int, float, null, displaying percentages when data is int, float, null etc.&lt;br /&gt;
&lt;br /&gt;
Even though we've moved most of the code into private functions, the core functionalities of the controller are refactored and appropriate test cases are written to ensure high coverage. &lt;br /&gt;
&lt;br /&gt;
Please run the following command to execute the tests:&lt;br /&gt;
&lt;br /&gt;
 rspec spec/controllers/assessment360_controller_spec.rb&lt;br /&gt;
&lt;br /&gt;
=== Testing from UI ===&lt;br /&gt;
The following steps needs to be performed to test this code from UI:&lt;br /&gt;
&lt;br /&gt;
1.	Log in as instructor(username: instructor6 , password: password). Please either do step 2 or 3, as both are not required.&lt;br /&gt;
&lt;br /&gt;
2.	Select Courses, and the page will show a list of courses. Please select the rightmost icons for any course (we recommend CSC517 Fall 2017, CSC517 Fall 2011 so there’s more data, but it can take some time for it load since there’s a lot of pre-loaded data in the VCL)&lt;br /&gt;
&lt;br /&gt;
3.	Alternatively, you can log in and go to this URL: http://152.7.99.75:8080/assessment360/index?course_id=184&lt;br /&gt;
&lt;br /&gt;
4.	You should be able to see a webpage with a table and checkboxes at the top. This table is an instructor’s 360-degree view of a course, containing the scores of each students in the course for every assignment the instructor has added to Expertiza. &lt;br /&gt;
&lt;br /&gt;
5.	Unchecking some or all of the checkboxes removes and brings back various columns from/to the page. Please feel free to test this out.&lt;br /&gt;
&lt;br /&gt;
=== Code Coverage ===&lt;br /&gt;
&lt;br /&gt;
[[File:E2219_codecov.png|800px]]&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_expected.png&amp;diff=146627</id>
		<title>File:Assessment 360 course student grade expected.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment_360_course_student_grade_expected.png&amp;diff=146627"/>
		<updated>2022-11-15T21:01:50Z</updated>

		<summary type="html">&lt;p&gt;Dmmehta2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmmehta2</name></author>
	</entry>
</feed>