<?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=Psamant2</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=Psamant2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Psamant2"/>
	<updated>2026-04-16T04:23:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164998</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164998"/>
		<updated>2025-04-23T02:08:33Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Current View (after code changes) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
1. assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
[[File:Assessment360_1.png|750px]]&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_2.png|750px]]&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_3.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. all_students_all_reviews.html.erb and course_student_grade_summary.html.erb removed&lt;br /&gt;
&lt;br /&gt;
[[File:Delete_2.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. course_summary.html.erb added which contains the combined view&lt;br /&gt;
&lt;br /&gt;
[[File:course_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
[[File:tree_display.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. routes.rb&lt;br /&gt;
&lt;br /&gt;
[[File:routes.png|450px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Testing Results ===&lt;br /&gt;
&lt;br /&gt;
[[File:testing.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164997</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164997"/>
		<updated>2025-04-23T02:08:10Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Current View (after code changes) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
1. assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
[[File:Assessment360_1.png.png|750px]]&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_2.png.png|750px]]&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_3.png.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. all_students_all_reviews.html.erb and course_student_grade_summary.html.erb removed&lt;br /&gt;
&lt;br /&gt;
[[File:Delete_2.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. course_summary.html.erb added which contains the combined view&lt;br /&gt;
&lt;br /&gt;
[[File:course_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
[[File:tree_display.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. routes.rb&lt;br /&gt;
&lt;br /&gt;
[[File:routes.png|450px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Testing Results ===&lt;br /&gt;
&lt;br /&gt;
[[File:testing.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164995</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164995"/>
		<updated>2025-04-23T02:07:46Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Current View (after code changes) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
1. assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_1.png.png|750px]]&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_2.png.png|750px]]&lt;br /&gt;
&lt;br /&gt;
[[File:assessment360_3.png.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. all_students_all_reviews.html.erb and course_student_grade_summary.html.erb removed&lt;br /&gt;
&lt;br /&gt;
[[File:Delete_2.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. course_summary.html.erb added which contains the combined view&lt;br /&gt;
&lt;br /&gt;
[[File:course_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
[[File:tree_display.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. routes.rb&lt;br /&gt;
&lt;br /&gt;
[[File:routes.png|450px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Testing Results ===&lt;br /&gt;
&lt;br /&gt;
[[File:testing.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Delete_2.png&amp;diff=164994</id>
		<title>File:Delete 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Delete_2.png&amp;diff=164994"/>
		<updated>2025-04-23T02:07:22Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course_summary.png&amp;diff=164993</id>
		<title>File:Course summary.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course_summary.png&amp;diff=164993"/>
		<updated>2025-04-23T02:06:53Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Tree_display.png&amp;diff=164990</id>
		<title>File:Tree display.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Tree_display.png&amp;diff=164990"/>
		<updated>2025-04-23T02:04:50Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Routes.png&amp;diff=164987</id>
		<title>File:Routes.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Routes.png&amp;diff=164987"/>
		<updated>2025-04-23T02:03:45Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment360_3.png&amp;diff=164983</id>
		<title>File:Assessment360 3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment360_3.png&amp;diff=164983"/>
		<updated>2025-04-23T01:59:48Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment360_2.png&amp;diff=164982</id>
		<title>File:Assessment360 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment360_2.png&amp;diff=164982"/>
		<updated>2025-04-23T01:59:39Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment360_1.png&amp;diff=164981</id>
		<title>File:Assessment360 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assessment360_1.png&amp;diff=164981"/>
		<updated>2025-04-23T01:59:29Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164975</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164975"/>
		<updated>2025-04-23T01:54:53Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
1. assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. all_students_all_reviews.html.erb and course_student_grade_summary.html.erb removed&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. course_summary.html.erb added which contains the combined view&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. tree_display.jsx&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
3. routes.rb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Testing Results ===&lt;br /&gt;
&lt;br /&gt;
[[File:testing.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164967</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164967"/>
		<updated>2025-04-23T01:38:36Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Testing Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Testing Results ===&lt;br /&gt;
&lt;br /&gt;
[[File:testing.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164964</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164964"/>
		<updated>2025-04-23T01:37:24Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Testing Strategy */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:testing.png|750px]]&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Testing.png&amp;diff=164960</id>
		<title>File:Testing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Testing.png&amp;diff=164960"/>
		<updated>2025-04-23T01:31:42Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: Psamant2 uploaded a new version of File:Testing.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164956</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164956"/>
		<updated>2025-04-23T01:27:34Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Implementation Video */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
Youtube Link: https://youtu.be/I3f4sVR_NWg&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164935</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164935"/>
		<updated>2025-04-23T01:16:35Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Team Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Implementation Video ==&lt;br /&gt;
&lt;br /&gt;
Video Link: https://drive.google.com/file/d/1aAzGuSc-qwed4sGMIsWrIgelTTqd_OJ0/view&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164909</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164909"/>
		<updated>2025-04-23T01:02:35Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164908</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164908"/>
		<updated>2025-04-23T01:02:24Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
1. all_students_all_reviews.html.erb&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
&lt;br /&gt;
2. course_student_grade_summary.html.erb&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164906</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164906"/>
		<updated>2025-04-23T01:01:20Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
[[File:old_all_students_all_reviews.png|750px]]&lt;br /&gt;
[[File:old_course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Old_course_student_grade_summary.png&amp;diff=164904</id>
		<title>File:Old course student grade summary.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Old_course_student_grade_summary.png&amp;diff=164904"/>
		<updated>2025-04-23T01:00:50Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Old_all_students_all_reviews.png&amp;diff=164903</id>
		<title>File:Old all students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Old_all_students_all_reviews.png&amp;diff=164903"/>
		<updated>2025-04-23T01:00:05Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164860</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164860"/>
		<updated>2025-04-23T00:17:51Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Current View (after code changes) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png|750px]]&lt;br /&gt;
[[File:course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
The main objective of this project was to enhance the UI/UX and code quality of the assessment360 controller. This involved merging the two existing views (all_students_all_reviews and course_student_grade_summary) into a single unified view.&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164856</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164856"/>
		<updated>2025-04-23T00:15:59Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
Previously, the Assessment360 Controllers view relied on two separate views i.e. all_students_all_reviews and course_student_grade_summary, to display different aspects of student performance. This is how they looked like before.&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png|750px]]&lt;br /&gt;
[[File:course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164852</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164852"/>
		<updated>2025-04-23T00:11:46Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png|750px]]&lt;br /&gt;
[[File:course_student_grade_summary.png|750px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164851</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164851"/>
		<updated>2025-04-23T00:11:25Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png|650px]]&lt;br /&gt;
[[File:course_student_grade_summary.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Course_student_grade_summary.png&amp;diff=164850</id>
		<title>File:Course student grade summary.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Course_student_grade_summary.png&amp;diff=164850"/>
		<updated>2025-04-23T00:10:45Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164849</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164849"/>
		<updated>2025-04-23T00:10:01Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png|650px]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164847</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164847"/>
		<updated>2025-04-23T00:09:40Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png|200px|thumb|left|Caption]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164846</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164846"/>
		<updated>2025-04-23T00:09:02Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Previous View */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
[[File:All_students_all_reviews.png]]&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:All_students_all_reviews.png&amp;diff=164845</id>
		<title>File:All students all reviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:All_students_all_reviews.png&amp;diff=164845"/>
		<updated>2025-04-23T00:07:58Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164843</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164843"/>
		<updated>2025-04-22T23:57:48Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Previous View ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Current View (after code changes) ===&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164842</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164842"/>
		<updated>2025-04-22T23:56:47Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164841</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=164841"/>
		<updated>2025-04-22T23:56:22Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* UI/UX Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problem Overview ==&lt;br /&gt;
The '''Assessment360 Controller''' within the Expertiza platform serves as a key tool for instructors, providing a holistic view of student performance across multiple assessment perspectives. The controller aggregates and displays data from various evaluation components, including teammate reviews, meta-reviews, instructor grades, peer review scores, and assignment submissions. The term &amp;lt;code&amp;gt;Assessment360&amp;lt;/code&amp;gt; reflects its purpose of offering a comprehensive, 360-degree evaluation of a student's performance.&lt;br /&gt;
&lt;br /&gt;
Currently, the system relies on two separate views — &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; — to display different aspects of student performance. These views present:&lt;br /&gt;
* Project-level data: The projects a student has worked on and the corresponding grades.&lt;br /&gt;
* Peer review data: The scores students receive from their teammates through the teammate review process.&lt;br /&gt;
&lt;br /&gt;
While these views serve important functions, their separation results in a fragmented user experience, as instructors must switch between the views to see a complete set of student performance data. Additionally, the user interface (UI) is not optimized for an intuitive, seamless experience. There are limitations regarding&lt;br /&gt;
* The ability to interact with or customize the data display (e.g., column visibility, sorting, and reordering).&lt;br /&gt;
* The lack of visual clarity in data presentation (e.g., inconsistent formatting and absence of visual grade indicators).&lt;br /&gt;
* Inadequate responsiveness for different device types.&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Controller Structure ===&lt;br /&gt;
The &amp;lt;code&amp;gt;Assessment360Controller&amp;lt;/code&amp;gt; is the central controller handling the logic for both the &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt; views. It interacts with various models and services to fetch, process, and deliver the necessary data to the views. The current structure is as follows:&lt;br /&gt;
* The controller is responsible for gathering and processing assessment data such as grades, peer reviews, and meta-reviews for each student.&lt;br /&gt;
* It includes logic for handling class averages, calculating final grades, and determining peer review averages.&lt;br /&gt;
* The current implementation uses direct logic for grade calculations, and all calculations are executed within the controller itself, which could lead to bloated code and reduced maintainability.&lt;br /&gt;
* The views are rendered with minimal controller-side logic, relying on the controller to pass the necessary data to the front-end.&lt;br /&gt;
&lt;br /&gt;
=== Current Views ===&lt;br /&gt;
The current implementation provides two main views that instructors can use to assess the performance of students. These views are defined in separate HTML ERB files.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;all_students_all_reviews.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view displays detailed student performance data in a table format. Key features include:&lt;br /&gt;
* Student Information Table: Displays each student’s name, ID, and relevant information.&lt;br /&gt;
* Teammate and Meta-Review Scores: For each student, the table shows the scores received from teammates and meta-reviews, which help in assessing peer evaluations.&lt;br /&gt;
* Class Averages: For each assignment and review type, class averages are calculated and displayed for instructors to analyze the overall performance of the class.&lt;br /&gt;
* Separate Columns for Review Types: Each type of review (&amp;lt;code&amp;gt;teammate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta-review&amp;lt;/code&amp;gt;, etc.) is shown in a separate column, making it easy to compare different assessment categories side by side.&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;course_student_grade_summary.html.erb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
This view focuses on summarizing the project grades and peer review scores for each student. It includes:&lt;br /&gt;
* Student Grades and Peer Review Scores**: Displays the individual project grades and the peer review scores that a student has received.&lt;br /&gt;
* Assignment Topics: Lists the assignment topics associated with each project, along with the grades and peer review scores for those specific topics.&lt;br /&gt;
* Final Grades and Peer Review Averages: The final grade for each student is calculated by considering both the project grade and peer review scores, and the average peer review score is displayed alongside the final grade.&lt;br /&gt;
* Sortable Table Structure: The table in this view is designed to be sortable, allowing instructors to order students by project grades, peer review scores, or any other criterion available in the table. This adds flexibility in how data is analyzed.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[File:E2536_Spring_2025.png|600x600px|Improve assessment360]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
-- Previous View&lt;br /&gt;
&lt;br /&gt;
-- Current View After Changes&lt;br /&gt;
&lt;br /&gt;
== Testing Strategy ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Type !! Description !! Tests&lt;br /&gt;
|-&lt;br /&gt;
| ''' Unit Tests''' || Test individual controller methods || - Test grade calculations&amp;lt;br&amp;gt;- Test data formatting&lt;br /&gt;
|-&lt;br /&gt;
| ''' Integration Tests''' || Test interactions between components || - Test view rendering&amp;lt;br&amp;gt;- Test database queries&amp;lt;br&amp;gt;- Test caching functionality&lt;br /&gt;
|-&lt;br /&gt;
| ''' Manual Testing''' || Test UI functionality, performance, and error handling || - Test UI functionality&amp;lt;br&amp;gt;- Test performance with large datasets&amp;lt;br&amp;gt;- Test error scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Success Criteria ==&lt;br /&gt;
&lt;br /&gt;
The success of this feature implementation will be evaluated based on the following criteria:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Criterion !! Description&lt;br /&gt;
|-&lt;br /&gt;
| '''UI Enhancements Implemented and Working''' || All proposed UI enhancements, including the unified view, column management features, and data presentation improvements, must be fully implemented and functioning as expected. The UI should be intuitive, responsive, and meet the design goals outlined in the document.&lt;br /&gt;
|-&lt;br /&gt;
| '''Performance Improvements Measurable''' || The feature should demonstrate a measurable improvement in performance, particularly in terms of load times and responsiveness when rendering large datasets or performing grade calculations. Performance benchmarking should indicate a noticeable reduction in latency.&lt;br /&gt;
|-&lt;br /&gt;
| '''Test Coverage ''' || Comprehensive unit and integration tests must cover more than 80% of the new code and critical paths in the controller. This ensures that the feature is reliable, and potential issues are identified early in the development cycle. Test results should be stable, with no significant failures.&lt;br /&gt;
|-&lt;br /&gt;
| '''Code Documentation Complete''' || All new and modified code must be thoroughly documented. This includes clear inline comments, explanations for complex logic, and appropriate documentation for new functions, classes, and components. This ensures that future developers can understand and maintain the code efficiently.&lt;br /&gt;
|-&lt;br /&gt;
| '''No Regression Bugs''' || After implementing the new feature, no existing functionality in the Assessment360 controller should break or behave unexpectedly. Regression testing should show that previously working parts of the system continue to function without issues.&lt;br /&gt;
|-&lt;br /&gt;
| '''Positive User Feedback''' || End-users (instructors and administrators) must provide positive feedback about the usability and effectiveness of the feature. Feedback should indicate that the feature adds value, improves user experience, and meets the goals outlined in the design document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163667</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163667"/>
		<updated>2025-04-08T02:05:01Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Use Case Diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
[[File:UseCaseDiagram.png|UseCaseDiagram]]&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163663</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163663"/>
		<updated>2025-04-08T02:03:14Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Current Implementation Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Use Case Diagram ==&lt;br /&gt;
For this project our job is to unify the view of the two files, i.e. all_students_all_reviews and course_student_grade_summary, which were created in the previous implementation to one. This would result in a single view which would help in evaluating performances by combining a lot of different perspectives. In our case, if we merge the two files and create a new view, the user should be able to view all the information that is there to be seen in one page. This includes:&lt;br /&gt;
* Viewing a Unified Dashboard&lt;br /&gt;
* Viewing all the Project Grades&lt;br /&gt;
* Viewing Peer Evaluation Scores&lt;br /&gt;
* Selecting and Deselecting Columns&lt;br /&gt;
&lt;br /&gt;
Using this information we have created the following Use Case Diagram:&lt;br /&gt;
&lt;br /&gt;
== Design Pattern Usage in Assessment360Controller ==&lt;br /&gt;
&lt;br /&gt;
The '''Assessment360Controller''' implements multiple design patterns that improve clarity, modularity, and maintainability of the code.&lt;br /&gt;
&lt;br /&gt;
=== 1. Facade Pattern ===&lt;br /&gt;
The controller acts as a facade, hiding complex interactions between various models (''Course'', ''Assignment'', ''Participant'', ''Team'', etc.) and exposing a simplified interface for the view. It aggregates data like grades, reviews, and penalties and prepares it in a structured format, simplifying the presentation layer.&lt;br /&gt;
&lt;br /&gt;
=== 2. Strategy Pattern ===&lt;br /&gt;
The use of helper modules such as:&lt;br /&gt;
* '''GradesHelper'''&lt;br /&gt;
* '''AuthorizationHelper'''&lt;br /&gt;
* '''Scoring'''&lt;br /&gt;
* '''PenaltyHelper'''&lt;br /&gt;
&lt;br /&gt;
follows the Strategy Pattern. Each module encapsulates a specific piece of functionality, and the controller delegates responsibility to these interchangeable strategies, promoting clean separation of concerns and easier testing.&lt;br /&gt;
&lt;br /&gt;
=== 3. Template Method Pattern ===&lt;br /&gt;
The method '''action_allowed?''' is a hook method that overrides a predefined template method in ''ApplicationController''. This allows customized access control behavior while maintaining a consistent interface across all controllers — an example of the Template Method Pattern in action.&lt;br /&gt;
&lt;br /&gt;
=== 4. Separation of Concerns ===&lt;br /&gt;
Responsibility is split between:&lt;br /&gt;
* '''Controller''': Orchestrates data flow&lt;br /&gt;
* '''Models''': Store and retrieve business data&lt;br /&gt;
* '''Helpers''': Encapsulate computation and utility logic&lt;br /&gt;
* '''Views''': Render formatted output&lt;br /&gt;
&lt;br /&gt;
This adheres to the '''Separation of Concerns''' principle and keeps each layer clean and testable.&lt;br /&gt;
&lt;br /&gt;
These design patterns contribute to the robustness and scalability of the 360-degree assessment feature, allowing future teams to maintain and extend it with ease.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - jpurohi@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163510</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163510"/>
		<updated>2025-04-08T00:45:44Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Team Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - smomin@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163509</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163509"/>
		<updated>2025-04-08T00:45:36Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Team Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
'''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - smomin@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163508</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163508"/>
		<updated>2025-04-08T00:45:26Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Team Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
 '''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
 '''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - smomin@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163507</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163507"/>
		<updated>2025-04-08T00:45:15Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Team Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
* '''Mentor:''' Mitesh Anil Agarwal&lt;br /&gt;
* '''Team:'''&lt;br /&gt;
* Jap Ashokbhai Purohit - smomin@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163506</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163506"/>
		<updated>2025-04-08T00:44:24Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title: Improve assessment360 Controller'''&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
* Mentor: Mitesh Anil Agarwal&lt;br /&gt;
* Team:&lt;br /&gt;
* Jap Ashokbhai Purohit - smomin@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163505</id>
		<title>CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2536._Improve_assessment360_controller&amp;diff=163505"/>
		<updated>2025-04-08T00:43:58Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
'''Project Title:''' Improve assessment360 Controller&lt;br /&gt;
&lt;br /&gt;
== Objective ==&lt;br /&gt;
The primary goal is to enhance the UI/UX and code quality of the &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller. This involves:&lt;br /&gt;
* Merging the two existing views (&amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;) into a single unified view.&lt;br /&gt;
* Improving the presentation and clarity of data (student grades, peer reviews).&lt;br /&gt;
* Refactoring logic for better separation of concerns and maintainability.&lt;br /&gt;
* Implementing feedback from the previous team.&lt;br /&gt;
&lt;br /&gt;
== Current Implementation Summary ==&lt;br /&gt;
The &amp;lt;code&amp;gt;assessment360&amp;lt;/code&amp;gt; controller exposes two main methods:&lt;br /&gt;
* &amp;lt;code&amp;gt;all_students_all_reviews&amp;lt;/code&amp;gt;: Displays peer review scores per student.&lt;br /&gt;
* &amp;lt;code&amp;gt;course_student_grade_summary&amp;lt;/code&amp;gt;: Displays projects and grades for each student.&lt;br /&gt;
&lt;br /&gt;
'''Limitations noted in previous feedback:'''&lt;br /&gt;
* Separate views instead of a unified dashboard.&lt;br /&gt;
* Excessive decimal precision in grade averages.&lt;br /&gt;
* Some layout/design issues (e.g., narrow name column).&lt;br /&gt;
* Business logic within controllers (should be moved to mixins).&lt;br /&gt;
* Sparse code comments.&lt;br /&gt;
&lt;br /&gt;
== Planned Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Functional Changes ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Unified View || Combine both views into a single HTML page that includes both project grades and review scores.&lt;br /&gt;
|-&lt;br /&gt;
| Column Selection || Allow users to toggle visible columns using checkboxes.&lt;br /&gt;
|-&lt;br /&gt;
| Exclude Unreviewed Assignments || Retain the functionality to exclude unreviewed assignments from averages.&lt;br /&gt;
|-&lt;br /&gt;
| Averages Precision || Limit decimal precision to 2 points for clarity.&lt;br /&gt;
|-&lt;br /&gt;
| Wider Name Column || Adjust layout to prioritize readability (e.g., wider name column than username).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Code Refactor ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task !! Reason&lt;br /&gt;
|-&lt;br /&gt;
| Move averaging logic to mixins or model concerns || Improve separation of concerns and reusability.&lt;br /&gt;
|-&lt;br /&gt;
| Commenting || Add meaningful comments for helper methods and business logic.&lt;br /&gt;
|-&lt;br /&gt;
| Query Optimization || Utilize the &amp;lt;code&amp;gt;bullet&amp;lt;/code&amp;gt; gem to prevent N+1 queries where applicable.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UI/UX Design ==&lt;br /&gt;
The new unified view will feature:&lt;br /&gt;
* A tabular layout showing all relevant data.&lt;br /&gt;
* Sectioned headers for each student.&lt;br /&gt;
* Collapsible panels (if needed) for clarity.&lt;br /&gt;
* Visual cues for peer review vs. project grades.&lt;br /&gt;
* Responsive design for usability across devices.&lt;br /&gt;
&lt;br /&gt;
== Testing Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Type !! Details&lt;br /&gt;
|-&lt;br /&gt;
| Unit Tests || For mixin methods and average calculations.&lt;br /&gt;
|-&lt;br /&gt;
| Functional Tests || Using RSpec + Capybara to validate UI behavior.&lt;br /&gt;
|-&lt;br /&gt;
| Manual Testing || Validate layout, toggle functionality, and performance.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Metrics for Success ==&lt;br /&gt;
* Unified view is fully integrated and intuitive.&lt;br /&gt;
* UI loads efficiently and scales with data.&lt;br /&gt;
* Code coverage is maintained or improved.&lt;br /&gt;
* Previous feedback points are addressed.&lt;br /&gt;
* PR receives clean review with minimal rework.&lt;br /&gt;
&lt;br /&gt;
== Team Information ==&lt;br /&gt;
* Mentor: Mitesh Anil Agarwal&lt;br /&gt;
* Team:&lt;br /&gt;
* Jap Ashokbhai Purohit - smomin@ncsu.edu&lt;br /&gt;
* Sharmeen Momin - 	smomin@ncsu.edu&lt;br /&gt;
* Prithish Samanta - psamant2@ncsu.edu&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* [https://github.com/expertiza/expertiza Expertiza Codebase]&lt;br /&gt;
* [https://guides.rubyonrails.org/action_view_overview.html Rails View Helpers]&lt;br /&gt;
* [https://github.com/flyerhzm/bullet Bullet Gem Documentation]&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162216</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162216"/>
		<updated>2025-03-24T04:38:14Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Our Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|800px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card. [[File:BidsModel.png|900px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162215</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162215"/>
		<updated>2025-03-24T04:37:57Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Our Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|800px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card. [[File:BidsModel.png|1000px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162214</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162214"/>
		<updated>2025-03-24T04:37:41Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Our Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|800px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card. [[File:BidsModel.png|700px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162213</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162213"/>
		<updated>2025-03-24T04:37:17Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Our Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|800px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card.&lt;br /&gt;
 [[File:BidsModel.png|850px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162212</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162212"/>
		<updated>2025-03-24T04:36:58Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Our Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|800px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card.[[File:BidsModel.png|850px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162211</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162211"/>
		<updated>2025-03-24T04:36:16Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Our Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|800px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card. [[File:BidsModel.png|850px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162210</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162210"/>
		<updated>2025-03-24T04:35:03Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|850px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card. [[File:BidsModel.png|850px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ViewBid.png&amp;diff=162209</id>
		<title>File:ViewBid.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ViewBid.png&amp;diff=162209"/>
		<updated>2025-03-24T04:34:23Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162208</id>
		<title>CSC/ECE 517 Fall 2024 - E2519. Implement view for results of bidding</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2519._Implement_view_for_results_of_bidding&amp;diff=162208"/>
		<updated>2025-03-24T04:34:09Z</updated>

		<summary type="html">&lt;p&gt;Psamant2: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Expertiza is an open-source platform that educational institutions use to create, assign, and manage assignments and peer assessments. To enhance its functionality, our team improved the existing implementation of the topic bidding results feature.  &lt;br /&gt;
&lt;br /&gt;
The original implementation ('''''E2459''''') attempted to address the issue where instructors could only monitor topic bidding by impersonating students, making it difficult to verify whether the bidding assignment algorithm correctly assigned teams to topics. However, the previous solution did not function as intended. &lt;br /&gt;
&lt;br /&gt;
This project focuses on developing the bidding page again with a better view, enhancing usability, and ensuring better code maintainability. Key improvements making the user interface better, showing vital information that would help the user analyze the projected data easily, optimizing the topic bidding table layout for readability, adding info buttons for better context, improving test cases, and refactoring the code for efficiency.  &lt;br /&gt;
&lt;br /&gt;
With these enhancements, instructors and students will have a seamless experience navigating the topic bidding results, making the process more transparent, accessible, and easier to interpret. This project significantly improves the usability of the platform, empowering users with better tools for decision-making.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
TODO: Problem Statement&lt;br /&gt;
The existing topic bidding results feature in Expertiza lacks usability and effectiveness, making it difficult for instructors to monitor and analyze the bidding process efficiently. The current implementation requires instructors to impersonate students to view bidding statuses, which is cumbersome and does not provide a clear overview of how topics are assigned. Additionally, the previous attempt (E2459) to address this issue failed to function as intended, leaving gaps in usability and functionality.&lt;br /&gt;
&lt;br /&gt;
Key issues with the current system include:&lt;br /&gt;
&lt;br /&gt;
1. Lack of visibility – Instructors cannot easily track topic allocations and bidding outcomes.&lt;br /&gt;
&lt;br /&gt;
2. Poor data presentation – The information displayed is not structured in a way that facilitates easy analysis.&lt;br /&gt;
&lt;br /&gt;
3. Limited context – Users do not receive sufficient guidance or explanations for the bidding process.&lt;br /&gt;
&lt;br /&gt;
4. Code inefficiencies – The existing implementation lacks maintainability, making future enhancements difficult.&lt;br /&gt;
&lt;br /&gt;
This project aims to come up with an entirely new design and improve the topic bidding results feature by addressing these challenges, ensuring a more user-friendly, informative, and efficient experience for both instructors and students.&lt;br /&gt;
&lt;br /&gt;
== Objectives ==&lt;br /&gt;
&lt;br /&gt;
The primary objective of this project is to enhance the topic bidding results feature in Expertiza by improving its usability, accessibility, and maintainability. Specifically, our goals include:&lt;br /&gt;
&lt;br /&gt;
1. Improve User Interface &amp;amp; Experience – Redesign the bidding results page with a structured layout that presents information clearly and intuitively.&lt;br /&gt;
&lt;br /&gt;
2. Enhance Data Visualization – Display essential bidding-related data in a format that is easy to interpret, allowing users to analyze assignments effectively.&lt;br /&gt;
&lt;br /&gt;
3. Optimize Table Layout – Improve the readability of the topic bidding table to facilitate better decision-making.&lt;br /&gt;
&lt;br /&gt;
4. Provide Contextual Information – Introduce info buttons and tooltips to help users understand the bidding process and related data.&lt;br /&gt;
&lt;br /&gt;
5. Develop and Document Code for Maintainability – Enhance the efficiency and structure of the codebase to support future updates and scalability.&lt;br /&gt;
&lt;br /&gt;
By achieving these objectives, this project aims to provide instructors and students with a seamless and transparent way to view and analyze topic bidding results, improving their overall experience on the platform.&lt;br /&gt;
&lt;br /&gt;
== Steps To Run The Project ==&lt;br /&gt;
&lt;br /&gt;
In order to run the application, one should have Node.js installed in their local.&lt;br /&gt;
&lt;br /&gt;
In order to run the application, run the below commands.&lt;br /&gt;
&lt;br /&gt;
1. npm install - this installs all dependencies listed in the package.json file for a Node.js project&lt;br /&gt;
&lt;br /&gt;
2. npm start - This runs the app in the development mode.&lt;br /&gt;
&lt;br /&gt;
== Our Changes ==&lt;br /&gt;
As part of our efforts to improve the topic bidding results feature in Expertiza, we introduced several key enhancements to enhance usability, visualization, and accessibility. The following changes were implemented:&lt;br /&gt;
&lt;br /&gt;
# '''User Interface Enhancements''' &lt;br /&gt;
## Replaced the traditional table format with a card-based view for better readability and a more modern interface.[[File:BidsPage.png|850px]]&lt;br /&gt;
## Styled the card view with improved layouts, ensuring a more intuitive display of bidding details.&lt;br /&gt;
## Integrated modals to display detailed bid and team information upon clicking a card. [[File:BidsModel.png|850px]]&lt;br /&gt;
# '''Data Visualization Improvements''' &lt;br /&gt;
## Implemented bar graphs to visually represent bidding trends, allowing for easier analysis of topic popularity and bid distributions.[[File:BidsGraph.png|850px]]&lt;br /&gt;
## Styled the graph to ensure clear data representation and seamless integration with the user interface.[[File:Biddstable.png|850px]]&lt;br /&gt;
# '''Download Functionality''' &lt;br /&gt;
## Added a Download CSV button to allow users to export bidding results in CSV format for external analysis.[[File:DownloadCsvCodepng.png|850px]]&lt;br /&gt;
## Implemented a Download PDF button to generate a well-formatted PDF report of the bidding results.[[File:DownloadPdfCode.png|850px]]&lt;br /&gt;
# '''Navigation and Accessibility Enhancements''' : &lt;br /&gt;
##Introduced a direct link from the assignment details page to the bidding results, eliminating the need for manual navigation[[File:AssignmentPageForBidding.png|850px]]&lt;br /&gt;
# '''Code and Maintainability Improvements''' : &lt;br /&gt;
##Conducted unit testing and manual testing to ensure all implemented features functioned as intended and provided a seamless user experience.&lt;br /&gt;
&lt;br /&gt;
These changes collectively enhance the usability and efficiency of the topic bidding results feature, making it easier for instructors and students to analyze bidding outcomes and make informed decisions.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
This document details the test suite for the View Bid functionality, which allows students to access bidding information for projects. The tests ensure that:&lt;br /&gt;
&lt;br /&gt;
# Only users with the Student role can see and access the View Bid link in the navigation, while the instructors and the admin have to access the view bid page through a different method.&lt;br /&gt;
# The BiddingPage component renders correctly and displays project bidding data&lt;br /&gt;
# The role-based access controls are working properly&lt;br /&gt;
&lt;br /&gt;
'''Test Framework and Structure''' &lt;br /&gt;
&lt;br /&gt;
 '''The tests are organized into three main files:'''&lt;br /&gt;
# BiddingPage.test.tsx: Unit tests for the BiddingPage component&lt;br /&gt;
# Header.test.tsx: Unit tests for the header component with focus on the View Bid link&lt;br /&gt;
# ViewBid.integration.test.tsx: Integration tests for View Bid functionality across components&lt;br /&gt;
&lt;br /&gt;
 '''BiddingPage Component Tests (src/pages/Bidding/BiddingPage.test.tsx)'''&lt;br /&gt;
These tests focus on the UI and functionality of the BiddingPage component.&lt;br /&gt;
# renders the page title correctly - Ensures that components like main heading &amp;quot;Assignment Bidding Summary by Priority&amp;quot; appears on the page without crashing&lt;br /&gt;
# renders all topic cards from the data - Verifies that all topics from the mock data are rendered as cards and their details are displayed correctly&lt;br /&gt;
# displays bid statistics in each card - Tests that each topic card displays the expected bidding statistics&lt;br /&gt;
# Verifies the total bids count is displayed - Verifies that the PDF download button is present in the modal&lt;br /&gt;
&lt;br /&gt;
 '''Header Component Tests (src/layout/Header.test.tsx)'''&lt;br /&gt;
These tests focus on the role-based visibility of the View Bid link in the header.&lt;br /&gt;
# Should show &amp;quot;View Bid&amp;quot; link for users with Student role&lt;br /&gt;
# Should not show &amp;quot;View Bid&amp;quot; link for users with Instructor and Admin role&lt;br /&gt;
&lt;br /&gt;
 '''Integration Tests (src/tests/ViewBid.integration.test.tsx)'''&lt;br /&gt;
These tests verify the interaction between components and role-based access controls.&lt;br /&gt;
# Non-student users should not see View Bid link&lt;br /&gt;
# Protected route redirects non-students trying to access bidding page directly&lt;br /&gt;
&lt;br /&gt;
 '''Steps to Run all tests'''&lt;br /&gt;
 npm test&lt;br /&gt;
 '''Run specific test files'''&lt;br /&gt;
 npm test src/pages/Bidding/BiddingPage.test.tsx - Tests BiddingPage Components &lt;br /&gt;
 [[File:BiddingPageTest.png|600px]]&lt;br /&gt;
 npm test src/layout/Header.test.tsx - Header Component&lt;br /&gt;
 [[File:HeaderPage.png|thumb|600px]]&lt;br /&gt;
 npm test src/tests/ViewBid.integration.test.tsx - Performs Integration Tests&lt;br /&gt;
 [[File:ViewBid.png|thumb|600px]]&lt;br /&gt;
&lt;br /&gt;
== Opportunities for Additional Future Enhancements ==&lt;br /&gt;
&lt;br /&gt;
There are several areas where the current implementation can be improved or extended in the future:&lt;br /&gt;
&lt;br /&gt;
# '''Integrate Actual API Call:''' Currently, the data used is static. Integrating the frontend with the actual backend API will ensure real-time and dynamic data population.&lt;br /&gt;
# '''Implement RBAC Control for Download Functionality:''' To enhance security and maintain data privacy, Role-Based Access Control (RBAC) can be enforced on the PDF download feature. This ensures only authorized users can access sensitive information.&lt;br /&gt;
# '''Support Dynamic Priority Handling:''' At present, the system assumes exactly three priority levels. To make the implementation more robust, it should be refactored to handle any number of priority levels dynamically, based on the data received.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Mitesh Anil Agarwal&lt;br /&gt;
* Kartiki Bhandakkar&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* [https://github.com/jappurohit041 Jap Ashokbhai Purohit (Unity ID: jpurohi)]&lt;br /&gt;
* [https://github.com/prithishsamanta Prithish Samanta (Unity ID: psamant2)]&lt;br /&gt;
* [https://github.com/SharmeenMomin Sharmeen Momin (Unity ID: smomin)]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* '''Pull Request:''' [https://github.com/expertiza/reimplementation-front-end/pull/90 Frontend Reimplementation - PR #90]  &lt;br /&gt;
Contains the code changes and discussion related to the implemented feature.&lt;br /&gt;
&lt;br /&gt;
* '''Demo Video:''' [https://www.loom.com/share/e6fd5fb07ba64b208f1ecc93294491cb?sid=6d68e33c-28c7-4b83-ba81-8cdfab937443 Loom Recording]  &lt;br /&gt;
Walkthrough of the functionality implemented in the PR.&lt;br /&gt;
&lt;br /&gt;
* '''Requirement Document:''' [https://docs.google.com/document/d/1fVX5AytpMz0hns-1xnLshwHz94UW_aEXJI5VVdju1cc/edit?tab=t.0 Google Doc]  &lt;br /&gt;
Outlines the requirements and scope for the feature.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://html2canvas.hertzen.com/ html2canvas] – A JavaScript library that allows you to take &amp;quot;screenshots&amp;quot; of webpages or parts of them, rendering HTML content to canvas.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/parallax/jsPDF jsPDF] – A client-side JavaScript library used to generate PDF documents.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/simonbengtsson/jsPDF-AutoTable jsPDF-AutoTable] – A plugin for jsPDF that enables generation of tables with support for styling, column spanning, and automatic page breaking.&lt;/div&gt;</summary>
		<author><name>Psamant2</name></author>
	</entry>
</feed>