<?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=Atapkir</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=Atapkir"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Atapkir"/>
	<updated>2026-05-17T03:46:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160809</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160809"/>
		<updated>2024-12-04T14:46:47Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
*There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given to their teammates&lt;br /&gt;
*The instructor should be able to choose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewers should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on the following:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development of the user experience and testing, with particular emphasis on team collaboration features.&lt;br /&gt;
&lt;br /&gt;
*Review Interface Layout&lt;br /&gt;
**Clean tabbed interface separating &amp;quot;Reviews given&amp;quot; and &amp;quot;Reviews received&amp;quot;&lt;br /&gt;
**Toggle controls for showing/hiding review details&lt;br /&gt;
**Comprehensive data grid with:&lt;br /&gt;
***Question numbers for easy reference&lt;br /&gt;
***Question text column&lt;br /&gt;
***Individual reviewer columns&lt;br /&gt;
***Average score column&lt;br /&gt;
***Color-coded scoring cells for visual feedback&lt;br /&gt;
&lt;br /&gt;
*Interactive Elements&lt;br /&gt;
**Toggle switches for feature controls&lt;br /&gt;
**Hide/Show functionality for review details&lt;br /&gt;
**Anonymous mode toggle with visual indicator&lt;br /&gt;
**Click-through navigation between different review states&lt;br /&gt;
&lt;br /&gt;
*Visual Hierarchy&lt;br /&gt;
**Clear section headers and subheaders&lt;br /&gt;
**Consistent spacing and alignment&lt;br /&gt;
**Data-dense yet readable table design&lt;br /&gt;
**Score highlighting using appropriate color coding:&lt;br /&gt;
***Green for high scores&lt;br /&gt;
***Orange for medium scores&lt;br /&gt;
***Red for attention areas&lt;br /&gt;
&lt;br /&gt;
*Responsive Components&lt;br /&gt;
**Flexible grid system for review displays&lt;br /&gt;
**Adaptive table layout for different screen sizes&lt;br /&gt;
**Maintainable component structure for future extensions&lt;br /&gt;
**Consistent padding and margin systems&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
Core Architecture&lt;br /&gt;
&lt;br /&gt;
*The system follows a component-based architecture with five key components:&lt;br /&gt;
**TeammateReview (Root)**: Main container component managing application state and user roles&lt;br /&gt;
**CompositeScore**: Handles score aggregation and display&lt;br /&gt;
**ReviewToggle**: Controls view switching between given/received reviews&lt;br /&gt;
**TeammateHeatmap**: Visualizes review data in a color-coded matrix&lt;br /&gt;
**ShowReviews**: Displays detailed review information&lt;br /&gt;
&lt;br /&gt;
Design Decisions&lt;br /&gt;
&lt;br /&gt;
*State Management&lt;br /&gt;
**Redux for global authentication state&lt;br /&gt;
**React hooks for local component state&lt;br /&gt;
**Local storage for persistent user preferences&lt;br /&gt;
&lt;br /&gt;
*Role-Based Access&lt;br /&gt;
**Distinct views for instructors, and students&lt;br /&gt;
**Feature toggling based on user roles&lt;br /&gt;
**Anonymous review mode option&lt;br /&gt;
&lt;br /&gt;
UML Design&lt;br /&gt;
&lt;br /&gt;
*Instructor: Has full access to manage and view all team reviews, including the ability to view all students' reviews and control students' access permissions to view reviews.&lt;br /&gt;
*Student: Can view their own received teammate reviews only if granted permission by the instructor, with no access to other students' review information.&lt;br /&gt;
[[File:Teammate view uml.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Control Flow to access the concerned screens ===&lt;br /&gt;
From the student's perspective, they can see the comments he made to his teammates and there is a button available to choose to hide information or view details.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the student presses the button.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the instructor grants students permission to view teammate reviews, students can see score and comments from their teammates.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student recevied.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
In the instructor view, the instructor can choose to enable teammate review visibility permissions.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate instructor view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Overview ==&lt;br /&gt;
Our testing suite utilizes **React Testing Library (RTL)** with **Jest** as the test runner, focusing on component-level testing that prioritizes user interaction patterns over implementation details. The testing stack includes:&lt;br /&gt;
* *React Testing Library* for DOM manipulation and assertions&lt;br /&gt;
* *Jest* as the testing framework and runner&lt;br /&gt;
* *Redux Mock Store* for simulating Redux state in tests&lt;br /&gt;
* *@testing-library/react* for React-specific testing utilities&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage ===&lt;br /&gt;
Our test suite covers several key areas:&lt;br /&gt;
&lt;br /&gt;
==== Component Rendering ====&lt;br /&gt;
* Verification of component mounting and proper display of UI elements&lt;br /&gt;
* Testing of conditional rendering based on props&lt;br /&gt;
* Validation of anonymous vs. identified user displays&lt;br /&gt;
&lt;br /&gt;
==== User Interactions ====&lt;br /&gt;
* Toggle functionality between different view modes&lt;br /&gt;
* Button click handlers and state changes&lt;br /&gt;
* Form interactions and user input handling&lt;br /&gt;
&lt;br /&gt;
==== State Management ====&lt;br /&gt;
* Redux store integration testing&lt;br /&gt;
* State changes based on user roles (Student vs. Instructor)&lt;br /&gt;
* Component state management for features like anonymous mode&lt;br /&gt;
&lt;br /&gt;
==== Edge Cases ====&lt;br /&gt;
* Empty data handling&lt;br /&gt;
* Extreme score values&lt;br /&gt;
* Permission-based rendering differences&lt;br /&gt;
* Anonymous mode functionality&lt;br /&gt;
* Missing or incomplete data scenarios&lt;br /&gt;
&lt;br /&gt;
The tests follow RTL's best practices by focusing on user-centric behavior rather than implementation details, ensuring our components remain maintainable and resilient to refactoring while maintaining their expected functionality from an end-user perspective.&lt;br /&gt;
&lt;br /&gt;
== Test Files Overview ==&lt;br /&gt;
&lt;br /&gt;
=== TeammateHeatmap.test.tsx ===&lt;br /&gt;
Tests the heatmap visualization component that displays peer review scores. This component is responsible for showing a matrix of review scores with optional anonymization.&lt;br /&gt;
&lt;br /&gt;
* Renders review scores in a heatmap format&lt;br /&gt;
* Handles anonymous mode by masking reviewer names&lt;br /&gt;
* Manages empty data states&lt;br /&gt;
* Displays question text when enabled&lt;br /&gt;
* Shows column averages correctly&lt;br /&gt;
&lt;br /&gt;
[[File:cap1.png]]&lt;br /&gt;
&lt;br /&gt;
=== CompositeScore.test.tsx ===&lt;br /&gt;
Tests the component that calculates and displays aggregate scores for both given and received reviews.&lt;br /&gt;
&lt;br /&gt;
* Renders all score sections (given, received, overall)&lt;br /&gt;
* Handles empty review sets appropriately&lt;br /&gt;
* Correctly calculates scores for extreme cases (0 and 5)&lt;br /&gt;
* Displays formatted scores with proper decimal places&lt;br /&gt;
* Maintains correct score calculations across different review types&lt;br /&gt;
&lt;br /&gt;
[[File:cap2.png]]&lt;br /&gt;
&lt;br /&gt;
=== ReviewToggle.test.tsx ===&lt;br /&gt;
Tests the toggle mechanism that switches between &amp;quot;Reviews Given&amp;quot; and &amp;quot;Reviews Received&amp;quot; views.&lt;br /&gt;
&lt;br /&gt;
* Renders appropriate buttons based on user permissions&lt;br /&gt;
* Handles toggle state changes correctly&lt;br /&gt;
* Shows/hides received reviews based on permissions&lt;br /&gt;
* Special handling for instructor views&lt;br /&gt;
* Maintains correct active states for buttons&lt;br /&gt;
&lt;br /&gt;
[[File:cap3.png]]&lt;br /&gt;
&lt;br /&gt;
=== TeammateReview.test.tsx ===&lt;br /&gt;
Tests the main container component that orchestrates the entire teammate review feature.&lt;br /&gt;
&lt;br /&gt;
* Renders the main interface elements&lt;br /&gt;
* Toggles between review views (given/received)&lt;br /&gt;
* Controls question list visibility&lt;br /&gt;
* Manages anonymous mode&lt;br /&gt;
* Handles different user roles (student/instructor)&lt;br /&gt;
* Shows/hides review sections&lt;br /&gt;
* Integrates with Redux store&lt;br /&gt;
&lt;br /&gt;
[[File:cap4.png]]&lt;br /&gt;
&lt;br /&gt;
=== ShowReviews.test.tsx ===&lt;br /&gt;
Tests the component responsible for displaying individual review entries with comments and scores.&lt;br /&gt;
&lt;br /&gt;
* Renders review content correctly&lt;br /&gt;
* Handles anonymous mode for reviewer names&lt;br /&gt;
* Manages empty review states&lt;br /&gt;
* Displays comments and scores appropriately&lt;br /&gt;
* Integrates with Redux for user authentication&lt;br /&gt;
&lt;br /&gt;
== Common Testing Patterns ==&lt;br /&gt;
All files share several common testing patterns:&lt;br /&gt;
* Use of `beforeEach` for test setup&lt;br /&gt;
* Mock data initialization&lt;br /&gt;
* Edge case handling&lt;br /&gt;
* Role-based permission testing&lt;br /&gt;
* Integration with Redux store where needed&lt;br /&gt;
* Consistent use of RTL's query methods&lt;br /&gt;
* Focus on user-centric behavior testing&lt;br /&gt;
&lt;br /&gt;
These tests ensure robust functionality across the teammate review system while maintaining good testing practices and comprehensive coverage of both happy paths and edge cases.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/expertiza&lt;br /&gt;
*Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/82&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160808</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160808"/>
		<updated>2024-12-04T14:44:43Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat-map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
**There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given for their teammates&lt;br /&gt;
*The instructor should be able to chose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewer should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development of the user experience and testing, with particular emphasis on team collaboration features.&lt;br /&gt;
&lt;br /&gt;
*Review Interface Layout&lt;br /&gt;
**Clean tabbed interface separating &amp;quot;Reviews given&amp;quot; and &amp;quot;Reviews received&amp;quot;&lt;br /&gt;
**Toggle controls for showing/hiding review details&lt;br /&gt;
**Comprehensive data grid with:&lt;br /&gt;
***Question numbers for easy reference&lt;br /&gt;
***Question text column&lt;br /&gt;
***Individual reviewer columns&lt;br /&gt;
***Average score column&lt;br /&gt;
***Color-coded scoring cells for visual feedback&lt;br /&gt;
&lt;br /&gt;
*Interactive Elements&lt;br /&gt;
**Toggle switches for feature controls&lt;br /&gt;
**Hide/Show functionality for review details&lt;br /&gt;
**Anonymous mode toggle with visual indicator&lt;br /&gt;
**Click-through navigation between different review states&lt;br /&gt;
&lt;br /&gt;
*Visual Hierarchy&lt;br /&gt;
**Clear section headers and subheaders&lt;br /&gt;
**Consistent spacing and alignment&lt;br /&gt;
**Data-dense yet readable table design&lt;br /&gt;
**Score highlighting using appropriate color coding:&lt;br /&gt;
***Green for high scores&lt;br /&gt;
***Orange for medium scores&lt;br /&gt;
***Red for attention areas&lt;br /&gt;
&lt;br /&gt;
*Responsive Components&lt;br /&gt;
**Flexible grid system for review displays&lt;br /&gt;
**Adaptive table layout for different screen sizes&lt;br /&gt;
**Maintainable component structure for future extensions&lt;br /&gt;
**Consistent padding and margin systems&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
Core Architecture&lt;br /&gt;
&lt;br /&gt;
*The system follows a component-based architecture with five key components:&lt;br /&gt;
**TeammateReview (Root)**: Main container component managing application state and user roles&lt;br /&gt;
**CompositeScore**: Handles score aggregation and display&lt;br /&gt;
**ReviewToggle**: Controls view switching between given/received reviews&lt;br /&gt;
**TeammateHeatmap**: Visualizes review data in a color-coded matrix&lt;br /&gt;
**ShowReviews**: Displays detailed review information&lt;br /&gt;
&lt;br /&gt;
Design Decisions&lt;br /&gt;
&lt;br /&gt;
*State Management&lt;br /&gt;
**Redux for global authentication state&lt;br /&gt;
**React hooks for local component state&lt;br /&gt;
**Local storage for persistent user preferences&lt;br /&gt;
&lt;br /&gt;
*Role-Based Access&lt;br /&gt;
**Distinct views for instructors, and students&lt;br /&gt;
**Feature toggling based on user roles&lt;br /&gt;
**Anonymous review mode option&lt;br /&gt;
&lt;br /&gt;
UML Design&lt;br /&gt;
&lt;br /&gt;
*Instructor: Has full access to manage and view all team reviews, including the ability to view all students' reviews and control students' access permissions to view reviews.&lt;br /&gt;
*Student: Can view their own received teammate reviews only if granted permission by the instructor, with no access to other students' review information.&lt;br /&gt;
[[File:Teammate view uml.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Control Flow to access the concerned screens ===&lt;br /&gt;
From the student's perspective, they can see the comments he made to his teammates and there is a button available to choose to hide information or view details.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the student presses the button.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the instructor grants students permission to view teammate reviews, students can see score and comments from their teammates.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student recevied.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
In the instructor view, the instructor can choose to enable teammate review visibility permissions.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate instructor view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Overview ==&lt;br /&gt;
Our testing suite utilizes **React Testing Library (RTL)** with **Jest** as the test runner, focusing on component-level testing that prioritizes user interaction patterns over implementation details. The testing stack includes:&lt;br /&gt;
* *React Testing Library* for DOM manipulation and assertions&lt;br /&gt;
* *Jest* as the testing framework and runner&lt;br /&gt;
* *Redux Mock Store* for simulating Redux state in tests&lt;br /&gt;
* *@testing-library/react* for React-specific testing utilities&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage ===&lt;br /&gt;
Our test suite covers several key areas:&lt;br /&gt;
&lt;br /&gt;
==== Component Rendering ====&lt;br /&gt;
* Verification of component mounting and proper display of UI elements&lt;br /&gt;
* Testing of conditional rendering based on props&lt;br /&gt;
* Validation of anonymous vs. identified user displays&lt;br /&gt;
&lt;br /&gt;
==== User Interactions ====&lt;br /&gt;
* Toggle functionality between different view modes&lt;br /&gt;
* Button click handlers and state changes&lt;br /&gt;
* Form interactions and user input handling&lt;br /&gt;
&lt;br /&gt;
==== State Management ====&lt;br /&gt;
* Redux store integration testing&lt;br /&gt;
* State changes based on user roles (Student vs. Instructor)&lt;br /&gt;
* Component state management for features like anonymous mode&lt;br /&gt;
&lt;br /&gt;
==== Edge Cases ====&lt;br /&gt;
* Empty data handling&lt;br /&gt;
* Extreme score values&lt;br /&gt;
* Permission-based rendering differences&lt;br /&gt;
* Anonymous mode functionality&lt;br /&gt;
* Missing or incomplete data scenarios&lt;br /&gt;
&lt;br /&gt;
The tests follow RTL's best practices by focusing on user-centric behavior rather than implementation details, ensuring our components remain maintainable and resilient to refactoring while maintaining their expected functionality from an end-user perspective.&lt;br /&gt;
&lt;br /&gt;
== Test Files Overview ==&lt;br /&gt;
&lt;br /&gt;
=== TeammateHeatmap.test.tsx ===&lt;br /&gt;
Tests the heatmap visualization component that displays peer review scores. This component is responsible for showing a matrix of review scores with optional anonymization.&lt;br /&gt;
&lt;br /&gt;
* Renders review scores in a heatmap format&lt;br /&gt;
* Handles anonymous mode by masking reviewer names&lt;br /&gt;
* Manages empty data states&lt;br /&gt;
* Displays question text when enabled&lt;br /&gt;
* Shows column averages correctly&lt;br /&gt;
&lt;br /&gt;
[[File:cap1.png]]&lt;br /&gt;
&lt;br /&gt;
=== CompositeScore.test.tsx ===&lt;br /&gt;
Tests the component that calculates and displays aggregate scores for both given and received reviews.&lt;br /&gt;
&lt;br /&gt;
* Renders all score sections (given, received, overall)&lt;br /&gt;
* Handles empty review sets appropriately&lt;br /&gt;
* Correctly calculates scores for extreme cases (0 and 5)&lt;br /&gt;
* Displays formatted scores with proper decimal places&lt;br /&gt;
* Maintains correct score calculations across different review types&lt;br /&gt;
&lt;br /&gt;
[[File:cap2.png]]&lt;br /&gt;
&lt;br /&gt;
=== ReviewToggle.test.tsx ===&lt;br /&gt;
Tests the toggle mechanism that switches between &amp;quot;Reviews Given&amp;quot; and &amp;quot;Reviews Received&amp;quot; views.&lt;br /&gt;
&lt;br /&gt;
* Renders appropriate buttons based on user permissions&lt;br /&gt;
* Handles toggle state changes correctly&lt;br /&gt;
* Shows/hides received reviews based on permissions&lt;br /&gt;
* Special handling for instructor views&lt;br /&gt;
* Maintains correct active states for buttons&lt;br /&gt;
&lt;br /&gt;
[[File:cap3.png]]&lt;br /&gt;
&lt;br /&gt;
=== TeammateReview.test.tsx ===&lt;br /&gt;
Tests the main container component that orchestrates the entire teammate review feature.&lt;br /&gt;
&lt;br /&gt;
* Renders the main interface elements&lt;br /&gt;
* Toggles between review views (given/received)&lt;br /&gt;
* Controls question list visibility&lt;br /&gt;
* Manages anonymous mode&lt;br /&gt;
* Handles different user roles (student/instructor)&lt;br /&gt;
* Shows/hides review sections&lt;br /&gt;
* Integrates with Redux store&lt;br /&gt;
&lt;br /&gt;
[[File:cap4.png]]&lt;br /&gt;
&lt;br /&gt;
=== ShowReviews.test.tsx ===&lt;br /&gt;
Tests the component responsible for displaying individual review entries with comments and scores.&lt;br /&gt;
&lt;br /&gt;
* Renders review content correctly&lt;br /&gt;
* Handles anonymous mode for reviewer names&lt;br /&gt;
* Manages empty review states&lt;br /&gt;
* Displays comments and scores appropriately&lt;br /&gt;
* Integrates with Redux for user authentication&lt;br /&gt;
&lt;br /&gt;
== Common Testing Patterns ==&lt;br /&gt;
All files share several common testing patterns:&lt;br /&gt;
* Use of `beforeEach` for test setup&lt;br /&gt;
* Mock data initialization&lt;br /&gt;
* Edge case handling&lt;br /&gt;
* Role-based permission testing&lt;br /&gt;
* Integration with Redux store where needed&lt;br /&gt;
* Consistent use of RTL's query methods&lt;br /&gt;
* Focus on user-centric behavior testing&lt;br /&gt;
&lt;br /&gt;
These tests ensure robust functionality across the teammate review system while maintaining good testing practices and comprehensive coverage of both happy paths and edge cases.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/expertiza&lt;br /&gt;
*Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/82&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160807</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160807"/>
		<updated>2024-12-04T14:31:42Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat-map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
**There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given for their teammates&lt;br /&gt;
*The instructor should be able to chose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewer should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development of the user experience and testing, with particular emphasis on team collaboration features.&lt;br /&gt;
&lt;br /&gt;
*Review Interface Layout&lt;br /&gt;
**Clean tabbed interface separating &amp;quot;Reviews given&amp;quot; and &amp;quot;Reviews received&amp;quot;&lt;br /&gt;
**Toggle controls for showing/hiding review details&lt;br /&gt;
**Comprehensive data grid with:&lt;br /&gt;
***Question numbers for easy reference&lt;br /&gt;
***Question text column&lt;br /&gt;
***Individual reviewer columns&lt;br /&gt;
***Average score column&lt;br /&gt;
***Color-coded scoring cells for visual feedback&lt;br /&gt;
&lt;br /&gt;
*Interactive Elements&lt;br /&gt;
**Toggle switches for feature controls&lt;br /&gt;
**Hide/Show functionality for review details&lt;br /&gt;
**Anonymous mode toggle with visual indicator&lt;br /&gt;
**Click-through navigation between different review states&lt;br /&gt;
&lt;br /&gt;
*Visual Hierarchy&lt;br /&gt;
**Clear section headers and subheaders&lt;br /&gt;
**Consistent spacing and alignment&lt;br /&gt;
**Data-dense yet readable table design&lt;br /&gt;
**Score highlighting using appropriate color coding:&lt;br /&gt;
***Green for high scores&lt;br /&gt;
***Orange for medium scores&lt;br /&gt;
***Red for attention areas&lt;br /&gt;
&lt;br /&gt;
*Responsive Components&lt;br /&gt;
**Flexible grid system for review displays&lt;br /&gt;
**Adaptive table layout for different screen sizes&lt;br /&gt;
**Maintainable component structure for future extensions&lt;br /&gt;
**Consistent padding and margin systems&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
Core Architecture&lt;br /&gt;
&lt;br /&gt;
*The system follows a component-based architecture with five key components:&lt;br /&gt;
**TeammateReview (Root)**: Main container component managing application state and user roles&lt;br /&gt;
**CompositeScore**: Handles score aggregation and display&lt;br /&gt;
**ReviewToggle**: Controls view switching between given/received reviews&lt;br /&gt;
**TeammateHeatmap**: Visualizes review data in a color-coded matrix&lt;br /&gt;
**ShowReviews**: Displays detailed review information&lt;br /&gt;
&lt;br /&gt;
Design Decisions&lt;br /&gt;
&lt;br /&gt;
*State Management&lt;br /&gt;
**Redux for global authentication state&lt;br /&gt;
**React hooks for local component state&lt;br /&gt;
**Local storage for persistent user preferences&lt;br /&gt;
&lt;br /&gt;
*Role-Based Access&lt;br /&gt;
**Distinct views for instructors, and students&lt;br /&gt;
**Feature toggling based on user roles&lt;br /&gt;
**Anonymous review mode option&lt;br /&gt;
&lt;br /&gt;
UML Design&lt;br /&gt;
&lt;br /&gt;
*Instructor: Has full access to manage and view all team reviews, including the ability to view all students' reviews and control students' access permissions to view reviews.&lt;br /&gt;
*Student: Can view their own received teammate reviews only if granted permission by the instructor, with no access to other students' review information.&lt;br /&gt;
[[File:Teammate view uml.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Control Flow to access the concerned screens ===&lt;br /&gt;
From the student's perspective, they can see the comments he made to his teammates and there is a button available to choose to hide information or view details.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the student presses the button.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the instructor grants students permission to view teammate reviews, students can see score and comments from their teammates.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student recevied.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
In the instructor view, the instructor can choose to enable teammate review visibility permissions.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate instructor view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Overview ==&lt;br /&gt;
Our testing suite utilizes **React Testing Library (RTL)** with **Jest** as the test runner, focusing on component-level testing that prioritizes user interaction patterns over implementation details. The testing stack includes:&lt;br /&gt;
* **React Testing Library** for DOM manipulation and assertions&lt;br /&gt;
* **Jest** as the testing framework and runner&lt;br /&gt;
* **Redux Mock Store** for simulating Redux state in tests&lt;br /&gt;
* **@testing-library/react** for React-specific testing utilities&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage ===&lt;br /&gt;
Our test suite covers several key areas:&lt;br /&gt;
&lt;br /&gt;
==== Component Rendering ====&lt;br /&gt;
* Verification of component mounting and proper display of UI elements&lt;br /&gt;
* Testing of conditional rendering based on props&lt;br /&gt;
* Validation of anonymous vs. identified user displays&lt;br /&gt;
&lt;br /&gt;
==== User Interactions ====&lt;br /&gt;
* Toggle functionality between different view modes&lt;br /&gt;
* Button click handlers and state changes&lt;br /&gt;
* Form interactions and user input handling&lt;br /&gt;
&lt;br /&gt;
==== State Management ====&lt;br /&gt;
* Redux store integration testing&lt;br /&gt;
* State changes based on user roles (Student vs. Instructor)&lt;br /&gt;
* Component state management for features like anonymous mode&lt;br /&gt;
&lt;br /&gt;
==== Edge Cases ====&lt;br /&gt;
* Empty data handling&lt;br /&gt;
* Extreme score values&lt;br /&gt;
* Permission-based rendering differences&lt;br /&gt;
* Anonymous mode functionality&lt;br /&gt;
* Missing or incomplete data scenarios&lt;br /&gt;
&lt;br /&gt;
The tests follow RTL's best practices by focusing on user-centric behavior rather than implementation details, ensuring our components remain maintainable and resilient to refactoring while maintaining their expected functionality from an end-user perspective.&lt;br /&gt;
&lt;br /&gt;
== Test Files Overview ==&lt;br /&gt;
&lt;br /&gt;
=== TeammateHeatmap.test.tsx ===&lt;br /&gt;
Tests the heatmap visualization component that displays peer review scores. This component is responsible for showing a matrix of review scores with optional anonymization.&lt;br /&gt;
&lt;br /&gt;
* Renders review scores in a heatmap format&lt;br /&gt;
* Handles anonymous mode by masking reviewer names&lt;br /&gt;
* Manages empty data states&lt;br /&gt;
* Displays question text when enabled&lt;br /&gt;
* Shows column averages correctly&lt;br /&gt;
&lt;br /&gt;
[[File:cap1.png]]&lt;br /&gt;
&lt;br /&gt;
=== CompositeScore.test.tsx ===&lt;br /&gt;
Tests the component that calculates and displays aggregate scores for both given and received reviews.&lt;br /&gt;
&lt;br /&gt;
* Renders all score sections (given, received, overall)&lt;br /&gt;
* Handles empty review sets appropriately&lt;br /&gt;
* Correctly calculates scores for extreme cases (0 and 5)&lt;br /&gt;
* Displays formatted scores with proper decimal places&lt;br /&gt;
* Maintains correct score calculations across different review types&lt;br /&gt;
&lt;br /&gt;
[[File:cap2.png]]&lt;br /&gt;
&lt;br /&gt;
=== ReviewToggle.test.tsx ===&lt;br /&gt;
Tests the toggle mechanism that switches between &amp;quot;Reviews Given&amp;quot; and &amp;quot;Reviews Received&amp;quot; views.&lt;br /&gt;
&lt;br /&gt;
* Renders appropriate buttons based on user permissions&lt;br /&gt;
* Handles toggle state changes correctly&lt;br /&gt;
* Shows/hides received reviews based on permissions&lt;br /&gt;
* Special handling for instructor views&lt;br /&gt;
* Maintains correct active states for buttons&lt;br /&gt;
&lt;br /&gt;
[[File:cap3.png]]&lt;br /&gt;
&lt;br /&gt;
=== TeammateReview.test.tsx ===&lt;br /&gt;
Tests the main container component that orchestrates the entire teammate review feature.&lt;br /&gt;
&lt;br /&gt;
* Renders the main interface elements&lt;br /&gt;
* Toggles between review views (given/received)&lt;br /&gt;
* Controls question list visibility&lt;br /&gt;
* Manages anonymous mode&lt;br /&gt;
* Handles different user roles (student/instructor)&lt;br /&gt;
* Shows/hides review sections&lt;br /&gt;
* Integrates with Redux store&lt;br /&gt;
&lt;br /&gt;
[[File:cap4.png]]&lt;br /&gt;
&lt;br /&gt;
=== ShowReviews.test.tsx ===&lt;br /&gt;
Tests the component responsible for displaying individual review entries with comments and scores.&lt;br /&gt;
&lt;br /&gt;
* Renders review content correctly&lt;br /&gt;
* Handles anonymous mode for reviewer names&lt;br /&gt;
* Manages empty review states&lt;br /&gt;
* Displays comments and scores appropriately&lt;br /&gt;
* Integrates with Redux for user authentication&lt;br /&gt;
&lt;br /&gt;
== Common Testing Patterns ==&lt;br /&gt;
All files share several common testing patterns:&lt;br /&gt;
* Use of `beforeEach` for test setup&lt;br /&gt;
* Mock data initialization&lt;br /&gt;
* Edge case handling&lt;br /&gt;
* Role-based permission testing&lt;br /&gt;
* Integration with Redux store where needed&lt;br /&gt;
* Consistent use of RTL's query methods&lt;br /&gt;
* Focus on user-centric behavior testing&lt;br /&gt;
&lt;br /&gt;
These tests ensure robust functionality across the teammate review system while maintaining good testing practices and comprehensive coverage of both happy paths and edge cases.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/expertiza&lt;br /&gt;
*Pull Request: https://github.com/expertiza/reimplementation-front-end/pull/82&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=160775</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=160775"/>
		<updated>2024-12-04T06:33:30Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2024 - E2450. Refactor assignments_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2451. Reimplement feedback_response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2452. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2453. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2454. Refactor student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2455. Refactor sign_up_sheet_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb (Phase 2 - Design Document)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2457. GitHub metrics integration]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2458. User management and users table]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2459. View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2460 Mentor-Meeting Management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI for Courses]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI and Backend for Courses]]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2462._UI_for_Questionnaires CSC/ECE 517 Fall 2024 - E2462. UI for Questionnaire.rb]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2463_Implement_Front_End_for_Student_Task_List CSC/ECE 517 Fall 2024 - E2463. UI for Student Task List]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign_up_Topics)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2465. UI for Institutions and Notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2466. UI for Impersonate User]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2467. UI for View Submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2468. Reimplement due_date]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2469. Reimplement grades/view_team]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2470. Reimplement grades_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2471. Reimplement logger]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2472. Reimplement responses_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2473. Reimplement sign up topic.rb as project topic.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2474. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2475. Reimplement student_task view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2476. Reimplement student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2477. Reimplement suggestion_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2478. Reimplement the Question hierarchy as Item hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2479. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2480. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2481 Reimplement response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2483. Reimplement Notification Controller and Model]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2484. Reimplement participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2485. Allow reviewers to bid on what to review]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2486.Reimplement deadline_rights and deadline_types]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2487. Reimplement authorization_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2488 Reimplementation of Add TA to course]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &amp;quot;Etc&amp;quot; tab in ReactJS]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2490.1 Improving Assignment Participants Management UI in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2491.UI for View assignments in Courses view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2492. UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2493. UI for Assign Reviewers]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2401 Refactor Graphql API endpoint for contribution metrics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2402 Refactor Graphql API endpoint for repositories]]&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160713</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160713"/>
		<updated>2024-12-04T05:11:42Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat-map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
**There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given for their teammates&lt;br /&gt;
*The instructor should be able to chose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewer should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development of the user experience and testing, with particular emphasis on team collaboration features.&lt;br /&gt;
&lt;br /&gt;
*Review Interface Layout&lt;br /&gt;
**Clean tabbed interface separating &amp;quot;Reviews given&amp;quot; and &amp;quot;Reviews received&amp;quot;&lt;br /&gt;
**Toggle controls for showing/hiding review details&lt;br /&gt;
**Comprehensive data grid with:&lt;br /&gt;
***Question numbers for easy reference&lt;br /&gt;
***Question text column&lt;br /&gt;
***Individual reviewer columns&lt;br /&gt;
***Average score column&lt;br /&gt;
***Color-coded scoring cells for visual feedback&lt;br /&gt;
&lt;br /&gt;
*Interactive Elements&lt;br /&gt;
**Toggle switches for feature controls&lt;br /&gt;
**Hide/Show functionality for review details&lt;br /&gt;
**Anonymous mode toggle with visual indicator&lt;br /&gt;
**Click-through navigation between different review states&lt;br /&gt;
&lt;br /&gt;
*Visual Hierarchy&lt;br /&gt;
**Clear section headers and subheaders&lt;br /&gt;
**Consistent spacing and alignment&lt;br /&gt;
**Data-dense yet readable table design&lt;br /&gt;
**Score highlighting using appropriate color coding:&lt;br /&gt;
***Green for high scores&lt;br /&gt;
***Orange for medium scores&lt;br /&gt;
***Red for attention areas&lt;br /&gt;
&lt;br /&gt;
*Responsive Components&lt;br /&gt;
**Flexible grid system for review displays&lt;br /&gt;
**Adaptive table layout for different screen sizes&lt;br /&gt;
**Maintainable component structure for future extensions&lt;br /&gt;
**Consistent padding and margin systems&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
Core Architecture&lt;br /&gt;
&lt;br /&gt;
*The system follows a component-based architecture with five key components:&lt;br /&gt;
**TeammateReview (Root)**: Main container component managing application state and user roles&lt;br /&gt;
**CompositeScore**: Handles score aggregation and display&lt;br /&gt;
**ReviewToggle**: Controls view switching between given/received reviews&lt;br /&gt;
**TeammateHeatmap**: Visualizes review data in a color-coded matrix&lt;br /&gt;
**ShowReviews**: Displays detailed review information&lt;br /&gt;
&lt;br /&gt;
Design Decisions&lt;br /&gt;
&lt;br /&gt;
*State Management&lt;br /&gt;
**Redux for global authentication state&lt;br /&gt;
**React hooks for local component state&lt;br /&gt;
**Local storage for persistent user preferences&lt;br /&gt;
&lt;br /&gt;
*Role-Based Access&lt;br /&gt;
**Distinct views for instructors, and students&lt;br /&gt;
**Feature toggling based on user roles&lt;br /&gt;
**Anonymous review mode option&lt;br /&gt;
&lt;br /&gt;
UML Design&lt;br /&gt;
&lt;br /&gt;
*Instructor: Has full access to manage and view all team reviews, including the ability to view all students' reviews and control students' access permissions to view reviews.&lt;br /&gt;
*Student: Can view their own received teammate reviews only if granted permission by the instructor, with no access to other students' review information.&lt;br /&gt;
[[File:Teammate view uml.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Control Flow to access the concerned screens ===&lt;br /&gt;
From the student's perspective, they can see the comments he made to his teammates and there is a button available to choose to hide information or view details.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the student presses the button.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the instructor grants students permission to view teammate reviews, students can see score and comments from their teammates.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student recevied.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
In the instructor view, the instructor can choose to enable teammate review visibility permissions.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate instructor view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Overview ==&lt;br /&gt;
Our testing suite utilizes **React Testing Library (RTL)** with **Jest** as the test runner, focusing on component-level testing that prioritizes user interaction patterns over implementation details. The testing stack includes:&lt;br /&gt;
* **React Testing Library** for DOM manipulation and assertions&lt;br /&gt;
* **Jest** as the testing framework and runner&lt;br /&gt;
* **Redux Mock Store** for simulating Redux state in tests&lt;br /&gt;
* **@testing-library/react** for React-specific testing utilities&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage ===&lt;br /&gt;
Our test suite covers several key areas:&lt;br /&gt;
&lt;br /&gt;
==== Component Rendering ====&lt;br /&gt;
* Verification of component mounting and proper display of UI elements&lt;br /&gt;
* Testing of conditional rendering based on props&lt;br /&gt;
* Validation of anonymous vs. identified user displays&lt;br /&gt;
&lt;br /&gt;
==== User Interactions ====&lt;br /&gt;
* Toggle functionality between different view modes&lt;br /&gt;
* Button click handlers and state changes&lt;br /&gt;
* Form interactions and user input handling&lt;br /&gt;
&lt;br /&gt;
==== State Management ====&lt;br /&gt;
* Redux store integration testing&lt;br /&gt;
* State changes based on user roles (Student vs. Instructor)&lt;br /&gt;
* Component state management for features like anonymous mode&lt;br /&gt;
&lt;br /&gt;
==== Edge Cases ====&lt;br /&gt;
* Empty data handling&lt;br /&gt;
* Extreme score values&lt;br /&gt;
* Permission-based rendering differences&lt;br /&gt;
* Anonymous mode functionality&lt;br /&gt;
* Missing or incomplete data scenarios&lt;br /&gt;
&lt;br /&gt;
The tests follow RTL's best practices by focusing on user-centric behavior rather than implementation details, ensuring our components remain maintainable and resilient to refactoring while maintaining their expected functionality from an end-user perspective.&lt;br /&gt;
&lt;br /&gt;
== Test Files Overview ==&lt;br /&gt;
&lt;br /&gt;
=== TeammateHeatmap.test.tsx ===&lt;br /&gt;
Tests the heatmap visualization component that displays peer review scores. This component is responsible for showing a matrix of review scores with optional anonymization.&lt;br /&gt;
&lt;br /&gt;
* Renders review scores in a heatmap format&lt;br /&gt;
* Handles anonymous mode by masking reviewer names&lt;br /&gt;
* Manages empty data states&lt;br /&gt;
* Displays question text when enabled&lt;br /&gt;
* Shows column averages correctly&lt;br /&gt;
&lt;br /&gt;
[[File:cap1.png]]&lt;br /&gt;
&lt;br /&gt;
=== CompositeScore.test.tsx ===&lt;br /&gt;
Tests the component that calculates and displays aggregate scores for both given and received reviews.&lt;br /&gt;
&lt;br /&gt;
* Renders all score sections (given, received, overall)&lt;br /&gt;
* Handles empty review sets appropriately&lt;br /&gt;
* Correctly calculates scores for extreme cases (0 and 5)&lt;br /&gt;
* Displays formatted scores with proper decimal places&lt;br /&gt;
* Maintains correct score calculations across different review types&lt;br /&gt;
&lt;br /&gt;
[[File:cap2.png]]&lt;br /&gt;
&lt;br /&gt;
=== ReviewToggle.test.tsx ===&lt;br /&gt;
Tests the toggle mechanism that switches between &amp;quot;Reviews Given&amp;quot; and &amp;quot;Reviews Received&amp;quot; views.&lt;br /&gt;
&lt;br /&gt;
* Renders appropriate buttons based on user permissions&lt;br /&gt;
* Handles toggle state changes correctly&lt;br /&gt;
* Shows/hides received reviews based on permissions&lt;br /&gt;
* Special handling for instructor views&lt;br /&gt;
* Maintains correct active states for buttons&lt;br /&gt;
&lt;br /&gt;
[[File:cap3.png]]&lt;br /&gt;
&lt;br /&gt;
=== TeammateReview.test.tsx ===&lt;br /&gt;
Tests the main container component that orchestrates the entire teammate review feature.&lt;br /&gt;
&lt;br /&gt;
* Renders the main interface elements&lt;br /&gt;
* Toggles between review views (given/received)&lt;br /&gt;
* Controls question list visibility&lt;br /&gt;
* Manages anonymous mode&lt;br /&gt;
* Handles different user roles (student/instructor)&lt;br /&gt;
* Shows/hides review sections&lt;br /&gt;
* Integrates with Redux store&lt;br /&gt;
&lt;br /&gt;
[[File:cap4.png]]&lt;br /&gt;
&lt;br /&gt;
=== ShowReviews.test.tsx ===&lt;br /&gt;
Tests the component responsible for displaying individual review entries with comments and scores.&lt;br /&gt;
&lt;br /&gt;
* Renders review content correctly&lt;br /&gt;
* Handles anonymous mode for reviewer names&lt;br /&gt;
* Manages empty review states&lt;br /&gt;
* Displays comments and scores appropriately&lt;br /&gt;
* Integrates with Redux for user authentication&lt;br /&gt;
&lt;br /&gt;
== Common Testing Patterns ==&lt;br /&gt;
All files share several common testing patterns:&lt;br /&gt;
* Use of `beforeEach` for test setup&lt;br /&gt;
* Mock data initialization&lt;br /&gt;
* Edge case handling&lt;br /&gt;
* Role-based permission testing&lt;br /&gt;
* Integration with Redux store where needed&lt;br /&gt;
* Consistent use of RTL's query methods&lt;br /&gt;
* Focus on user-centric behavior testing&lt;br /&gt;
&lt;br /&gt;
These tests ensure robust functionality across the teammate review system while maintaining good testing practices and comprehensive coverage of both happy paths and edge cases.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/expertiza&lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap4.png&amp;diff=160711</id>
		<title>File:Cap4.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap4.png&amp;diff=160711"/>
		<updated>2024-12-04T05:09:51Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap3.png&amp;diff=160710</id>
		<title>File:Cap3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap3.png&amp;diff=160710"/>
		<updated>2024-12-04T05:09:41Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap2.png&amp;diff=160709</id>
		<title>File:Cap2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap2.png&amp;diff=160709"/>
		<updated>2024-12-04T05:09:32Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap1.png&amp;diff=160708</id>
		<title>File:Cap1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cap1.png&amp;diff=160708"/>
		<updated>2024-12-04T05:09:12Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160697</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160697"/>
		<updated>2024-12-04T04:59:57Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat-map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
**There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given for their teammates&lt;br /&gt;
*The instructor should be able to chose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewer should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development of the user experience and testing, with particular emphasis on team collaboration features.&lt;br /&gt;
&lt;br /&gt;
*Review Interface Layout&lt;br /&gt;
**Clean tabbed interface separating &amp;quot;Reviews given&amp;quot; and &amp;quot;Reviews received&amp;quot;&lt;br /&gt;
**Toggle controls for showing/hiding review details&lt;br /&gt;
**Comprehensive data grid with:&lt;br /&gt;
***Question numbers for easy reference&lt;br /&gt;
***Question text column&lt;br /&gt;
***Individual reviewer columns&lt;br /&gt;
***Average score column&lt;br /&gt;
***Color-coded scoring cells for visual feedback&lt;br /&gt;
&lt;br /&gt;
*Interactive Elements&lt;br /&gt;
**Toggle switches for feature controls&lt;br /&gt;
**Hide/Show functionality for review details&lt;br /&gt;
**Anonymous mode toggle with visual indicator&lt;br /&gt;
**Click-through navigation between different review states&lt;br /&gt;
&lt;br /&gt;
*Visual Hierarchy&lt;br /&gt;
**Clear section headers and subheaders&lt;br /&gt;
**Consistent spacing and alignment&lt;br /&gt;
**Data-dense yet readable table design&lt;br /&gt;
**Score highlighting using appropriate color coding:&lt;br /&gt;
***Green for high scores&lt;br /&gt;
***Orange for medium scores&lt;br /&gt;
***Red for attention areas&lt;br /&gt;
&lt;br /&gt;
*Responsive Components&lt;br /&gt;
**Flexible grid system for review displays&lt;br /&gt;
**Adaptive table layout for different screen sizes&lt;br /&gt;
**Maintainable component structure for future extensions&lt;br /&gt;
**Consistent padding and margin systems&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
Core Architecture&lt;br /&gt;
&lt;br /&gt;
*The system follows a component-based architecture with five key components:&lt;br /&gt;
**TeammateReview (Root)**: Main container component managing application state and user roles&lt;br /&gt;
**CompositeScore**: Handles score aggregation and display&lt;br /&gt;
**ReviewToggle**: Controls view switching between given/received reviews&lt;br /&gt;
**TeammateHeatmap**: Visualizes review data in a color-coded matrix&lt;br /&gt;
**ShowReviews**: Displays detailed review information&lt;br /&gt;
&lt;br /&gt;
Design Decisions&lt;br /&gt;
&lt;br /&gt;
*State Management&lt;br /&gt;
**Redux for global authentication state&lt;br /&gt;
**React hooks for local component state&lt;br /&gt;
**Local storage for persistent user preferences&lt;br /&gt;
&lt;br /&gt;
*Role-Based Access&lt;br /&gt;
**Distinct views for instructors, and students&lt;br /&gt;
**Feature toggling based on user roles&lt;br /&gt;
**Anonymous review mode option&lt;br /&gt;
&lt;br /&gt;
UML Design&lt;br /&gt;
&lt;br /&gt;
*Instructor: Has full access to manage and view all team reviews, including the ability to view all students' reviews and control students' access permissions to view reviews.&lt;br /&gt;
*Student: Can view their own received teammate reviews only if granted permission by the instructor, with no access to other students' review information.&lt;br /&gt;
[[File:Teammate view uml.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
=== Control Flow to access the concerned screens ===&lt;br /&gt;
From the student's perspective, they can see the comments he made to his teammates and there is a button available to choose to hide information or view details.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the student presses the button.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
When the instructor grants students permission to view teammate reviews, students can see score and comments from their teammates.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student recevied.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
In the instructor view, the instructor can choose to enable teammate review visibility permissions.&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate instructor view.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
== Testing Overview ==&lt;br /&gt;
Our testing suite utilizes **React Testing Library (RTL)** with **Jest** as the test runner, focusing on component-level testing that prioritizes user interaction patterns over implementation details. The testing stack includes:&lt;br /&gt;
* **React Testing Library** for DOM manipulation and assertions&lt;br /&gt;
* **Jest** as the testing framework and runner&lt;br /&gt;
* **Redux Mock Store** for simulating Redux state in tests&lt;br /&gt;
* **@testing-library/react** for React-specific testing utilities&lt;br /&gt;
&lt;br /&gt;
=== Test Coverage ===&lt;br /&gt;
Our test suite covers several key areas:&lt;br /&gt;
&lt;br /&gt;
==== Component Rendering ====&lt;br /&gt;
* Verification of component mounting and proper display of UI elements&lt;br /&gt;
* Testing of conditional rendering based on props&lt;br /&gt;
* Validation of anonymous vs. identified user displays&lt;br /&gt;
&lt;br /&gt;
==== User Interactions ====&lt;br /&gt;
* Toggle functionality between different view modes&lt;br /&gt;
* Button click handlers and state changes&lt;br /&gt;
* Form interactions and user input handling&lt;br /&gt;
&lt;br /&gt;
==== State Management ====&lt;br /&gt;
* Redux store integration testing&lt;br /&gt;
* State changes based on user roles (Student vs. Instructor)&lt;br /&gt;
* Component state management for features like anonymous mode&lt;br /&gt;
&lt;br /&gt;
==== Edge Cases ====&lt;br /&gt;
* Empty data handling&lt;br /&gt;
* Extreme score values&lt;br /&gt;
* Permission-based rendering differences&lt;br /&gt;
* Anonymous mode functionality&lt;br /&gt;
* Missing or incomplete data scenarios&lt;br /&gt;
&lt;br /&gt;
The tests follow RTL's best practices by focusing on user-centric behavior rather than implementation details, ensuring our components remain maintainable and resilient to refactoring while maintaining their expected functionality from an end-user perspective.&lt;br /&gt;
&lt;br /&gt;
== Test Files Overview ==&lt;br /&gt;
&lt;br /&gt;
=== TeammateHeatmap.test.tsx ===&lt;br /&gt;
Tests the heatmap visualization component that displays peer review scores. This component is responsible for showing a matrix of review scores with optional anonymization.&lt;br /&gt;
&lt;br /&gt;
* Renders review scores in a heatmap format&lt;br /&gt;
* Handles anonymous mode by masking reviewer names&lt;br /&gt;
* Manages empty data states&lt;br /&gt;
* Displays question text when enabled&lt;br /&gt;
* Shows column averages correctly&lt;br /&gt;
&lt;br /&gt;
=== CompositeScore.test.tsx ===&lt;br /&gt;
Tests the component that calculates and displays aggregate scores for both given and received reviews.&lt;br /&gt;
&lt;br /&gt;
* Renders all score sections (given, received, overall)&lt;br /&gt;
* Handles empty review sets appropriately&lt;br /&gt;
* Correctly calculates scores for extreme cases (0 and 5)&lt;br /&gt;
* Displays formatted scores with proper decimal places&lt;br /&gt;
* Maintains correct score calculations across different review types&lt;br /&gt;
&lt;br /&gt;
=== ReviewToggle.test.tsx ===&lt;br /&gt;
Tests the toggle mechanism that switches between &amp;quot;Reviews Given&amp;quot; and &amp;quot;Reviews Received&amp;quot; views.&lt;br /&gt;
&lt;br /&gt;
* Renders appropriate buttons based on user permissions&lt;br /&gt;
* Handles toggle state changes correctly&lt;br /&gt;
* Shows/hides received reviews based on permissions&lt;br /&gt;
* Special handling for instructor views&lt;br /&gt;
* Maintains correct active states for buttons&lt;br /&gt;
&lt;br /&gt;
=== TeammateReview.test.tsx ===&lt;br /&gt;
Tests the main container component that orchestrates the entire teammate review feature.&lt;br /&gt;
&lt;br /&gt;
* Renders the main interface elements&lt;br /&gt;
* Toggles between review views (given/received)&lt;br /&gt;
* Controls question list visibility&lt;br /&gt;
* Manages anonymous mode&lt;br /&gt;
* Handles different user roles (student/instructor)&lt;br /&gt;
* Shows/hides review sections&lt;br /&gt;
* Integrates with Redux store&lt;br /&gt;
&lt;br /&gt;
=== ShowReviews.test.tsx ===&lt;br /&gt;
Tests the component responsible for displaying individual review entries with comments and scores.&lt;br /&gt;
&lt;br /&gt;
* Renders review content correctly&lt;br /&gt;
* Handles anonymous mode for reviewer names&lt;br /&gt;
* Manages empty review states&lt;br /&gt;
* Displays comments and scores appropriately&lt;br /&gt;
* Integrates with Redux for user authentication&lt;br /&gt;
&lt;br /&gt;
== Common Testing Patterns ==&lt;br /&gt;
All files share several common testing patterns:&lt;br /&gt;
* Use of `beforeEach` for test setup&lt;br /&gt;
* Mock data initialization&lt;br /&gt;
* Edge case handling&lt;br /&gt;
* Role-based permission testing&lt;br /&gt;
* Integration with Redux store where needed&lt;br /&gt;
* Consistent use of RTL's query methods&lt;br /&gt;
* Focus on user-centric behavior testing&lt;br /&gt;
&lt;br /&gt;
These tests ensure robust functionality across the teammate review system while maintaining good testing practices and comprehensive coverage of both happy paths and edge cases.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/expertiza&lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160064</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160064"/>
		<updated>2024-12-02T21:10:53Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat-map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
**There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given for their teammates&lt;br /&gt;
*The instructor should be able to chose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewer should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development to the user experience and testing.&lt;br /&gt;
*Intuitive Design&lt;br /&gt;
**User-friendly interface&lt;br /&gt;
**Easy to navigate&lt;br /&gt;
*Testing&lt;br /&gt;
**All the components of the UI are functioning&lt;br /&gt;
**Error handling&lt;br /&gt;
**Reliability of the UI is maintained&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/expertiza&lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160063</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Teammate Review View</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Teammate_Review_View&amp;diff=160063"/>
		<updated>2024-12-02T20:57:15Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==  &lt;br /&gt;
After the previous design document submission, we changed projects, with the suggestion and approval of our mentor and Dr. Gehringer, to a reimplementation of the UI for Teammate Review view, which has a larger scope than our previous project. The previous implementation of this UI proposed changes to not only the view files, but the controller and model files as well. This was beyond the scope of the project and complicated the integration of the UI to the existing Expertiza. Thus, our current project will focus on reimplementing the Teammate Review view isolated from other components of the current Expertiza application. Additionally, we focus on implementing a clear and user-friendly UI for both students and instructors. Following the current review display, our main display will show the numerical scores with an associated color as a heat-map.&lt;br /&gt;
&lt;br /&gt;
== Previous Design == &lt;br /&gt;
=== Specifications ===&lt;br /&gt;
*Display teammate reviews as a colormap corresponding to the numerical scores&lt;br /&gt;
*Students should be able to view reviews they have given to their teammates and the reviews their teammates have given them&lt;br /&gt;
**There should be a clear indication in the view which reviews the student is viewing (i.e. those they have given or those they have received)&lt;br /&gt;
*Instructors should also be able to view a student's reviews from their teammates and the reviews a student has given for their teammates&lt;br /&gt;
*The instructor should be able to chose whether teammate reviews are visible to the student or not by a checkbox&lt;br /&gt;
*An average score should be shown, for all the relevant reviews, in a clear and useful way&lt;br /&gt;
*There should be an anonymized view option where the names of the reviewer should not be shown&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
The previous implementation focussed on a few main improvements to the view.&lt;br /&gt;
*Displaying the average score for instructors based on:&lt;br /&gt;
**A student's average received teammate score&lt;br /&gt;
**A student's average score given to teammates&lt;br /&gt;
*Improving the functionality of the automized view for students when selected by the instructor&lt;br /&gt;
**Use case diagram for the anonymized view:&lt;br /&gt;
[[File:uml_1.PNG|500px|UML for Anonymized]]&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
Main components to the testing plan included:&lt;br /&gt;
*Verifying the different displays for students vs. instructors&lt;br /&gt;
*Verifying login credentials&lt;br /&gt;
*Improvement in unit tests&lt;br /&gt;
*Addition of tests for calculating the average score&lt;br /&gt;
*Manual testing of the main display with the correct functionality&lt;br /&gt;
&lt;br /&gt;
== Proposed Design ==&lt;br /&gt;
&lt;br /&gt;
=== Specifications ===&lt;br /&gt;
Following the previous project specifications, our project will focus on further development to the user experience and testing.&lt;br /&gt;
*Intuitive Design&lt;br /&gt;
**User-friendly interface&lt;br /&gt;
**Easy to navigate&lt;br /&gt;
*Testing&lt;br /&gt;
**All the components of the UI are functioning&lt;br /&gt;
**Error handling&lt;br /&gt;
**Reliability of the UI is maintained&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159573</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159573"/>
		<updated>2024-11-14T18:59:23Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===  &lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
== 1. Objective and Goals ==  &lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.  &lt;br /&gt;
&lt;br /&gt;
Key Goals:  &lt;br /&gt;
1. Deliver an organized and clean display of student review summaries.  &lt;br /&gt;
2. Create a responsive design adaptable to various screen sizes and devices.  &lt;br /&gt;
3. Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==  &lt;br /&gt;
 Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.  &lt;br /&gt;
 Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
== 3. System Architecture ==  &lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
[[File:UIforReviewReport.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== 4. Technical Specifications and Design Patterns ==  &lt;br /&gt;
&lt;br /&gt;
=== 4.1 Component Design and Structure ===  &lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.  &lt;br /&gt;
&lt;br /&gt;
Core Components for Report Review UI:  &lt;br /&gt;
 ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.  &lt;br /&gt;
 ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.  &lt;br /&gt;
 ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Enhanced Role Management System ===  &lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:  &lt;br /&gt;
 Role Enumeration (ROLE Enum): Define roles like `INSTRUCTOR` to control access to the Report Review UI.  &lt;br /&gt;
 Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as `AuthContext.hasPermission('view_reviews')`, to control access based on user roles.  &lt;br /&gt;
 Conditional Rendering: Use `AuthContext` to ensure only users with the `INSTRUCTOR` role can view the `ReviewSummaryList`.&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Application of Design Patterns ===  &lt;br /&gt;
 Container-Presenter Pattern:  &lt;br /&gt;
  Purpose: Separate data-fetching logic from display logic for easier maintenance.  &lt;br /&gt;
  Application: A container component (e.g., `ReviewSummaryPageContainer`) will handle data fetching and pass the data to presentational components like `ReviewSummaryList`.  &lt;br /&gt;
  Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
 Error Handling Pattern with Error Boundaries:  &lt;br /&gt;
  Purpose: Capture and manage errors for smoother user experience and reliability.  &lt;br /&gt;
  Application: Use an `ErrorBoundary` component to handle errors within the `ReviewSummaryList` and `ReviewDetail` components.  &lt;br /&gt;
  Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
=== 4.4 TypeScript for Static Typing ===  &lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as `ReviewSummary`, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
=== 4.5 Testing Strategy ===  &lt;br /&gt;
 Unit Tests:  &lt;br /&gt;
  Components like `ReviewDetail` and `ErrorBoundary` will have unit tests to ensure error handling and data display work as expected.  &lt;br /&gt;
&lt;br /&gt;
 Integration Tests:  &lt;br /&gt;
  Verify that data flows correctly between components, especially between `ReviewSummaryList` and `ReviewDetail`.  &lt;br /&gt;
&lt;br /&gt;
 End-to-End Tests:  &lt;br /&gt;
  Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Development Environment Setup ===&lt;br /&gt;
 Install React and TypeScript: Initialize a TypeScript and React setup, configuring linting and testing tools.  &lt;br /&gt;
 Configure API Integration: Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Component Development Process ===&lt;br /&gt;
 Step-by-Step Development for Core Components:&lt;br /&gt;
  1. Notification Management Page Components:&lt;br /&gt;
     NotificationList:&lt;br /&gt;
       Data Fetching: Use a container to call the backend API, retrieving notifications based on user permissions.  &lt;br /&gt;
       Display: Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
     NotificationForm:&lt;br /&gt;
       Role Validation: Only accessible to TAs or higher, as verified through `AuthContext`.  &lt;br /&gt;
       Form Fields: Include title, message, and course selection with validation.  &lt;br /&gt;
       Submission: On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
&lt;br /&gt;
  2. Institution Management Page Components:&lt;br /&gt;
     InstitutionList:&lt;br /&gt;
       Data Loading: The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).  &lt;br /&gt;
       Rendering: Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
     InstitutionForm:&lt;br /&gt;
       Authorization Check: Only `INSTRUCTOR` or `ADMIN` roles can access this form.  &lt;br /&gt;
       Form Fields: Fields include institution name, address, and details, with backend validation.  &lt;br /&gt;
       Save and Update: Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 State Management ===&lt;br /&gt;
 Global State with Context API: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.  &lt;br /&gt;
 Local State: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Testing Strategy ===&lt;br /&gt;
 Unit Tests:  &lt;br /&gt;
  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
 Integration Tests:  &lt;br /&gt;
  Objective: Verify interactions between components.  &lt;br /&gt;
  Process: Complete page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is &lt;br /&gt;
   created.&lt;br /&gt;
 End-to-End Tests:  &lt;br /&gt;
  Objective: Validate complete user flows and role-based access.  &lt;br /&gt;
  Process: Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 API Integration ===&lt;br /&gt;
 RESTful API Design: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.  &lt;br /&gt;
 Error Handling: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159566</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159566"/>
		<updated>2024-11-14T17:20:13Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===  &lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
== 1. Objective and Goals ==  &lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.  &lt;br /&gt;
&lt;br /&gt;
'''Key Goals''':  &lt;br /&gt;
1. Deliver an organized and clean display of student review summaries.  &lt;br /&gt;
2. Create a responsive design adaptable to various screen sizes and devices.  &lt;br /&gt;
3. Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==  &lt;br /&gt;
* Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.  &lt;br /&gt;
* Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
== 3. System Architecture ==  &lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
[[File:UIforReviewReport.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== 4. Technical Specifications and Design Patterns ==  &lt;br /&gt;
&lt;br /&gt;
=== 4.1 Component Design and Structure ===  &lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.  &lt;br /&gt;
&lt;br /&gt;
'''Core Components for Report Review UI''':  &lt;br /&gt;
* ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.  &lt;br /&gt;
* ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.  &lt;br /&gt;
* ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Enhanced Role Management System ===  &lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:  &lt;br /&gt;
* Role Enumeration (ROLE Enum): Define roles like `INSTRUCTOR` to control access to the Report Review UI.  &lt;br /&gt;
* Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as `AuthContext.hasPermission('view_reviews')`, to control access based on user roles.  &lt;br /&gt;
* Conditional Rendering: Use `AuthContext` to ensure only users with the `INSTRUCTOR` role can view the `ReviewSummaryList`.&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Application of Design Patterns ===  &lt;br /&gt;
* Container-Presenter Pattern:  &lt;br /&gt;
  Purpose: Separate data-fetching logic from display logic for easier maintenance.  &lt;br /&gt;
  Application: A container component (e.g., `ReviewSummaryPageContainer`) will handle data fetching and pass the data to presentational components like `ReviewSummaryList`.  &lt;br /&gt;
  Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
* Error Handling Pattern with Error Boundaries:  &lt;br /&gt;
  Purpose: Capture and manage errors for smoother user experience and reliability.  &lt;br /&gt;
  Application: Use an `ErrorBoundary` component to handle errors within the `ReviewSummaryList` and `ReviewDetail` components.  &lt;br /&gt;
  Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
=== 4.4 TypeScript for Static Typing ===  &lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as `ReviewSummary`, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
=== 4.5 Testing Strategy ===  &lt;br /&gt;
* Unit Tests:  &lt;br /&gt;
  Components like `ReviewDetail` and `ErrorBoundary` will have unit tests to ensure error handling and data display work as expected.  &lt;br /&gt;
&lt;br /&gt;
* Integration Tests:  &lt;br /&gt;
  Verify that data flows correctly between components, especially between `ReviewSummaryList` and `ReviewDetail`.  &lt;br /&gt;
&lt;br /&gt;
* End-to-End Tests:  &lt;br /&gt;
  Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Development Environment Setup ===&lt;br /&gt;
* Install React and TypeScript: Initialize a TypeScript and React setup, configuring linting and testing tools.  &lt;br /&gt;
* Configure API Integration: Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Component Development Process ===&lt;br /&gt;
* Step-by-Step Development for Core Components:&lt;br /&gt;
  1. **Notification Management Page Components**:&lt;br /&gt;
     NotificationList:&lt;br /&gt;
       Data Fetching: Use a container to call the backend API, retrieving notifications based on user permissions.  &lt;br /&gt;
       Display: Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
     NotificationForm:&lt;br /&gt;
       Role Validation: Only accessible to TAs or higher, as verified through `AuthContext`.  &lt;br /&gt;
       Form Fields: Include title, message, and course selection with validation.  &lt;br /&gt;
       Submission: On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
&lt;br /&gt;
  2. **Institution Management Page Components**:&lt;br /&gt;
     InstitutionList:&lt;br /&gt;
       Data Loading: The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).  &lt;br /&gt;
       Rendering: Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
     InstitutionForm''':&lt;br /&gt;
       Authorization Check: Only `INSTRUCTOR` or `ADMIN` roles can access this form.  &lt;br /&gt;
       Form Fields: Fields include institution name, address, and details, with backend validation.  &lt;br /&gt;
       Save and Update: Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 State Management ===&lt;br /&gt;
* **Global State with Context API**: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.  &lt;br /&gt;
* **Local State**: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Testing Strategy ===&lt;br /&gt;
* Unit Tests:  &lt;br /&gt;
  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
* Integration Tests:  &lt;br /&gt;
  Objective: Verify interactions between components.  &lt;br /&gt;
  Process: Complete page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is created.&lt;br /&gt;
* End-to-End Tests:  &lt;br /&gt;
  Objective: Validate complete user flows and role-based access.  &lt;br /&gt;
  Process: Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 API Integration ===&lt;br /&gt;
* RESTful API Design: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.  &lt;br /&gt;
* Error Handling: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159565</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159565"/>
		<updated>2024-11-14T17:11:00Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===  &lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
== 1. Objective and Goals ==  &lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.  &lt;br /&gt;
&lt;br /&gt;
'''Key Goals''':  &lt;br /&gt;
1. Deliver an organized and clean display of student review summaries.  &lt;br /&gt;
2. Create a responsive design adaptable to various screen sizes and devices.  &lt;br /&gt;
3. Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==  &lt;br /&gt;
* Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.  &lt;br /&gt;
* Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
== 3. System Architecture ==  &lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
[[File:UIforReviewReport.jpeg]]&lt;br /&gt;
&lt;br /&gt;
== 4. Technical Specifications and Design Patterns ==  &lt;br /&gt;
&lt;br /&gt;
=== 4.1 Component Design and Structure ===  &lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.  &lt;br /&gt;
&lt;br /&gt;
'''Core Components for Report Review UI''':  &lt;br /&gt;
* ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.  &lt;br /&gt;
* ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.  &lt;br /&gt;
* ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Enhanced Role Management System ===  &lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:  &lt;br /&gt;
* Role Enumeration (ROLE Enum): Define roles like `INSTRUCTOR` to control access to the Report Review UI.  &lt;br /&gt;
* Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as `AuthContext.hasPermission('view_reviews')`, to control access based on user roles.  &lt;br /&gt;
* Conditional Rendering: Use `AuthContext` to ensure only users with the `INSTRUCTOR` role can view the `ReviewSummaryList`.&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Application of Design Patterns ===  &lt;br /&gt;
* Container-Presenter Pattern:  &lt;br /&gt;
  '''Purpose''': Separate data-fetching logic from display logic for easier maintenance.  &lt;br /&gt;
  '''Application''': A container component (e.g., `ReviewSummaryPageContainer`) will handle data fetching and pass the data to presentational components like `ReviewSummaryList`.  &lt;br /&gt;
  '''Benefits''': Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
* Error Handling Pattern with Error Boundaries:  &lt;br /&gt;
  '''Purpose''': Capture and manage errors for smoother user experience and reliability.  &lt;br /&gt;
  '''Application''': Use an `ErrorBoundary` component to handle errors within the `ReviewSummaryList` and `ReviewDetail` components.  &lt;br /&gt;
  '''Benefits''': Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
=== 4.4 TypeScript for Static Typing ===  &lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as `ReviewSummary`, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
=== 4.5 Testing Strategy ===  &lt;br /&gt;
* Unit Tests:  &lt;br /&gt;
  Components like `ReviewDetail` and `ErrorBoundary` will have unit tests to ensure error handling and data display work as expected.  &lt;br /&gt;
&lt;br /&gt;
* Integration Tests:  &lt;br /&gt;
  Verify that data flows correctly between components, especially between `ReviewSummaryList` and `ReviewDetail`.  &lt;br /&gt;
&lt;br /&gt;
* End-to-End Tests:  &lt;br /&gt;
  Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Development Environment Setup ===&lt;br /&gt;
* '''Install React and TypeScript''': Initialize a TypeScript and React setup, configuring linting and testing tools.  &lt;br /&gt;
* '''Configure API Integration''': Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Component Development Process ===&lt;br /&gt;
* '''Step-by-Step Development for Core Components''':&lt;br /&gt;
  1. **Notification Management Page Components**:&lt;br /&gt;
     '''NotificationList''':&lt;br /&gt;
       '''Data Fetching''': Use a container to call the backend API, retrieving notifications based on user permissions.  &lt;br /&gt;
       '''Display''': Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
     '''NotificationForm''':&lt;br /&gt;
       '''Role Validation''': Only accessible to TAs or higher, as verified through `AuthContext`.  &lt;br /&gt;
       '''Form Fields''': Include title, message, and course selection with validation.  &lt;br /&gt;
       '''Submission''': On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
&lt;br /&gt;
  2. **Institution Management Page Components**:&lt;br /&gt;
     '''InstitutionList''':&lt;br /&gt;
       '''Data Loading''': The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).  &lt;br /&gt;
       '''Rendering''': Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
     '''InstitutionForm''':&lt;br /&gt;
       '''Authorization Check''': Only `INSTRUCTOR` or `ADMIN` roles can access this form.  &lt;br /&gt;
       '''Form Fields''': Fields include institution name, address, and details, with backend validation.  &lt;br /&gt;
       '''Save and Update''': Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 State Management ===&lt;br /&gt;
* **Global State with Context API**: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.  &lt;br /&gt;
* **Local State**: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Testing Strategy ===&lt;br /&gt;
* Unit Tests:  &lt;br /&gt;
  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
* Integration Tests:  &lt;br /&gt;
  '''Objective''': Verify interactions between components.  &lt;br /&gt;
  '''Process''': Complete page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is created.&lt;br /&gt;
* End-to-End Tests:  &lt;br /&gt;
  '''Objective''': Validate complete user flows and role-based access.  &lt;br /&gt;
  '''Process''': Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 API Integration ===&lt;br /&gt;
* RESTful API Design: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.  &lt;br /&gt;
* Error Handling: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UIforReviewReport.jpeg&amp;diff=159564</id>
		<title>File:UIforReviewReport.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UIforReviewReport.jpeg&amp;diff=159564"/>
		<updated>2024-11-14T17:09:57Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159563</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159563"/>
		<updated>2024-11-14T17:08:21Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===  &lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
== 1. Objective and Goals ==  &lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.  &lt;br /&gt;
&lt;br /&gt;
'''Key Goals''':  &lt;br /&gt;
1. Deliver an organized and clean display of student review summaries.  &lt;br /&gt;
2. Create a responsive design adaptable to various screen sizes and devices.  &lt;br /&gt;
3. Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==  &lt;br /&gt;
* Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.  &lt;br /&gt;
* Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
== 3. System Architecture ==  &lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Technical Specifications and Design Patterns ==  &lt;br /&gt;
&lt;br /&gt;
=== 4.1 Component Design and Structure ===  &lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.  &lt;br /&gt;
&lt;br /&gt;
'''Core Components for Report Review UI''':  &lt;br /&gt;
* ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.  &lt;br /&gt;
* ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.  &lt;br /&gt;
* ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Enhanced Role Management System ===  &lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:  &lt;br /&gt;
* Role Enumeration (ROLE Enum): Define roles like `INSTRUCTOR` to control access to the Report Review UI.  &lt;br /&gt;
* Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as `AuthContext.hasPermission('view_reviews')`, to control access based on user roles.  &lt;br /&gt;
* Conditional Rendering: Use `AuthContext` to ensure only users with the `INSTRUCTOR` role can view the `ReviewSummaryList`.&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Application of Design Patterns ===  &lt;br /&gt;
* Container-Presenter Pattern:  &lt;br /&gt;
  '''Purpose''': Separate data-fetching logic from display logic for easier maintenance.  &lt;br /&gt;
  '''Application''': A container component (e.g., `ReviewSummaryPageContainer`) will handle data fetching and pass the data to presentational components like `ReviewSummaryList`.  &lt;br /&gt;
  '''Benefits''': Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
* Error Handling Pattern with Error Boundaries:  &lt;br /&gt;
  '''Purpose''': Capture and manage errors for smoother user experience and reliability.  &lt;br /&gt;
  '''Application''': Use an `ErrorBoundary` component to handle errors within the `ReviewSummaryList` and `ReviewDetail` components.  &lt;br /&gt;
  '''Benefits''': Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
=== 4.4 TypeScript for Static Typing ===  &lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as `ReviewSummary`, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
=== 4.5 Testing Strategy ===  &lt;br /&gt;
* Unit Tests:  &lt;br /&gt;
  Components like `ReviewDetail` and `ErrorBoundary` will have unit tests to ensure error handling and data display work as expected.  &lt;br /&gt;
&lt;br /&gt;
* Integration Tests:  &lt;br /&gt;
  Verify that data flows correctly between components, especially between `ReviewSummaryList` and `ReviewDetail`.  &lt;br /&gt;
&lt;br /&gt;
* End-to-End Tests:  &lt;br /&gt;
  Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Development Environment Setup ===&lt;br /&gt;
* '''Install React and TypeScript''': Initialize a TypeScript and React setup, configuring linting and testing tools.  &lt;br /&gt;
* '''Configure API Integration''': Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Component Development Process ===&lt;br /&gt;
* '''Step-by-Step Development for Core Components''':&lt;br /&gt;
  1. **Notification Management Page Components**:&lt;br /&gt;
     '''NotificationList''':&lt;br /&gt;
       '''Data Fetching''': Use a container to call the backend API, retrieving notifications based on user permissions.  &lt;br /&gt;
       '''Display''': Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
     '''NotificationForm''':&lt;br /&gt;
       '''Role Validation''': Only accessible to TAs or higher, as verified through `AuthContext`.  &lt;br /&gt;
       '''Form Fields''': Include title, message, and course selection with validation.  &lt;br /&gt;
       '''Submission''': On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
&lt;br /&gt;
  2. **Institution Management Page Components**:&lt;br /&gt;
     '''InstitutionList''':&lt;br /&gt;
       '''Data Loading''': The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).  &lt;br /&gt;
       '''Rendering''': Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
     '''InstitutionForm''':&lt;br /&gt;
       '''Authorization Check''': Only `INSTRUCTOR` or `ADMIN` roles can access this form.  &lt;br /&gt;
       '''Form Fields''': Fields include institution name, address, and details, with backend validation.  &lt;br /&gt;
       '''Save and Update''': Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 State Management ===&lt;br /&gt;
* **Global State with Context API**: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.  &lt;br /&gt;
* **Local State**: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Testing Strategy ===&lt;br /&gt;
* Unit Tests:  &lt;br /&gt;
  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
* Integration Tests:  &lt;br /&gt;
  '''Objective''': Verify interactions between components.  &lt;br /&gt;
  '''Process''': Complete page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is created.&lt;br /&gt;
* End-to-End Tests:  &lt;br /&gt;
  '''Objective''': Validate complete user flows and role-based access.  &lt;br /&gt;
  '''Process''': Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 API Integration ===&lt;br /&gt;
* RESTful API Design: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.  &lt;br /&gt;
* Error Handling: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159546</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159546"/>
		<updated>2024-11-14T04:34:05Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===  &lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
== 1. Objective and Goals ==  &lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.  &lt;br /&gt;
&lt;br /&gt;
'''Key Goals''':  &lt;br /&gt;
1. Deliver an organized and clean display of student review summaries.  &lt;br /&gt;
2. Create a responsive design adaptable to various screen sizes and devices.  &lt;br /&gt;
3. Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
== 2. Scope ==  &lt;br /&gt;
* **Report Review Summary**: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.  &lt;br /&gt;
* **Role-Based Access Control (RBAC)**: Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
== 3. System Architecture ==  &lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
== 4. Technical Specifications and Design Patterns ==  &lt;br /&gt;
&lt;br /&gt;
=== 4.1 Component Design and Structure ===  &lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.  &lt;br /&gt;
&lt;br /&gt;
'''Core Components for Report Review UI''':  &lt;br /&gt;
* **ReviewSummaryList**: Displays a summary list of student reviews for a specific assignment.  &lt;br /&gt;
* **ReviewDetail**: Shows detailed information for each review, accessible upon selecting a summary.  &lt;br /&gt;
* **ErrorBoundary**: Wraps components to catch and display errors related to data fetching and rendering.  &lt;br /&gt;
&lt;br /&gt;
=== 4.2 Enhanced Role Management System ===  &lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:  &lt;br /&gt;
* **Role Enumeration (ROLE Enum)**: Define roles like `INSTRUCTOR` to control access to the Report Review UI.  &lt;br /&gt;
* **Centralized Authentication Context (AuthContext)**: Store and provide role information globally. This enables easy role checks, such as `AuthContext.hasPermission('view_reviews')`, to control access based on user roles.  &lt;br /&gt;
* **Conditional Rendering**: Use `AuthContext` to ensure only users with the `INSTRUCTOR` role can view the `ReviewSummaryList`.&lt;br /&gt;
&lt;br /&gt;
=== 4.3 Application of Design Patterns ===  &lt;br /&gt;
* **Container-Presenter Pattern**:  &lt;br /&gt;
  * '''Purpose''': Separate data-fetching logic from display logic for easier maintenance.  &lt;br /&gt;
  * '''Application''': A container component (e.g., `ReviewSummaryPageContainer`) will handle data fetching and pass the data to presentational components like `ReviewSummaryList`.  &lt;br /&gt;
  * '''Benefits''': Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
* **Error Handling Pattern with Error Boundaries**:  &lt;br /&gt;
  * '''Purpose''': Capture and manage errors for smoother user experience and reliability.  &lt;br /&gt;
  * '''Application''': Use an `ErrorBoundary` component to handle errors within the `ReviewSummaryList` and `ReviewDetail` components.  &lt;br /&gt;
  * '''Benefits''': Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
=== 4.4 TypeScript for Static Typing ===  &lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as `ReviewSummary`, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
=== 4.5 Testing Strategy ===  &lt;br /&gt;
* **Unit Tests**:  &lt;br /&gt;
  Components like `ReviewDetail` and `ErrorBoundary` will have unit tests to ensure error handling and data display work as expected.  &lt;br /&gt;
&lt;br /&gt;
* **Integration Tests**:  &lt;br /&gt;
  Verify that data flows correctly between components, especially between `ReviewSummaryList` and `ReviewDetail`.  &lt;br /&gt;
&lt;br /&gt;
* **End-to-End Tests**:  &lt;br /&gt;
  Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Development Environment Setup ===&lt;br /&gt;
* '''Install React and TypeScript''': Initialize a TypeScript and React setup, configuring linting and testing tools.  &lt;br /&gt;
* '''Configure API Integration''': Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Component Development Process ===&lt;br /&gt;
* '''Step-by-Step Development for Core Components''':&lt;br /&gt;
  1. **Notification Management Page Components**:&lt;br /&gt;
     * '''NotificationList''':&lt;br /&gt;
       * '''Data Fetching''': Use a container to call the backend API, retrieving notifications based on user permissions.  &lt;br /&gt;
       * '''Display''': Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
     * '''NotificationForm''':&lt;br /&gt;
       * '''Role Validation''': Only accessible to TAs or higher, as verified through `AuthContext`.  &lt;br /&gt;
       * '''Form Fields''': Include title, message, and course selection with validation.  &lt;br /&gt;
       * '''Submission''': On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
&lt;br /&gt;
  2. **Institution Management Page Components**:&lt;br /&gt;
     * '''InstitutionList''':&lt;br /&gt;
       * '''Data Loading''': The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).  &lt;br /&gt;
       * '''Rendering''': Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
     * '''InstitutionForm''':&lt;br /&gt;
       * '''Authorization Check''': Only `INSTRUCTOR` or `ADMIN` roles can access this form.  &lt;br /&gt;
       * '''Form Fields''': Fields include institution name, address, and details, with backend validation.  &lt;br /&gt;
       * '''Save and Update''': Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 State Management ===&lt;br /&gt;
* **Global State with Context API**: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.  &lt;br /&gt;
* **Local State**: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Testing Strategy ===&lt;br /&gt;
* **Unit Tests**:  &lt;br /&gt;
  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
* **Integration Tests**:  &lt;br /&gt;
  * '''Objective''': Verify interactions between components.  &lt;br /&gt;
  * '''Process''': Complete page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is created.&lt;br /&gt;
* **End-to-End Tests**:  &lt;br /&gt;
  * '''Objective''': Validate complete user flows and role-based access.  &lt;br /&gt;
  * '''Process''': Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 API Integration ===&lt;br /&gt;
* **RESTful API Design**: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.  &lt;br /&gt;
* **Error Handling**: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159545</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159545"/>
		<updated>2024-11-14T04:32:10Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
==1. Objective and Goals==&lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.&lt;br /&gt;
&lt;br /&gt;
Key Goals:&lt;br /&gt;
    1.Deliver an organized and clean display of student review summaries.&lt;br /&gt;
    2.Create a responsive design adaptable to various screen sizes and devices.&lt;br /&gt;
    3.Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
==2. Scope==&lt;br /&gt;
- Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.&lt;br /&gt;
&lt;br /&gt;
- Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
==3. System Architecture==&lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
==4. Technical Specifications and Design Patterns==&lt;br /&gt;
4.1 Component Design and Structure&lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.&lt;br /&gt;
&lt;br /&gt;
    Core Components for Report Review UI:&lt;br /&gt;
&lt;br /&gt;
    ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.&lt;br /&gt;
    ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.&lt;br /&gt;
    ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
    Role management will ensure only instructors can access the Report Review page. Key elements include:&lt;br /&gt;
&lt;br /&gt;
    Role Enumeration (ROLE Enum): Define roles like INSTRUCTOR to control access to the Report Review UI.&lt;br /&gt;
    Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as &lt;br /&gt;
    AuthContext.hasPermission('view_reviews'), to control access based on user roles.&lt;br /&gt;
    Conditional Rendering: Use AuthContext to ensure only users with the INSTRUCTOR role can view the ReviewSummaryList.&lt;br /&gt;
&lt;br /&gt;
4.3 Application of Design Patterns&lt;br /&gt;
    Container-Presenter Pattern:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Separate data-fetching logic from display logic for easier maintenance.&lt;br /&gt;
    Application: A container component (e.g., ReviewSummaryPageContainer) will handle data fetching and pass the data to presentational components like ReviewSummaryList.&lt;br /&gt;
    Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
    Error Handling Pattern with Error Boundaries:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Capture and manage errors for smoother user experience and reliability.&lt;br /&gt;
    Application: Use an ErrorBoundary component to handle errors within the ReviewSummaryList and ReviewDetail components.&lt;br /&gt;
    Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
4.4 TypeScript for Static Typing&lt;br /&gt;
    TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as ReviewSummary, will define expected &lt;br /&gt;
    data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
4.5 Testing Strategy&lt;br /&gt;
    Unit Tests:&lt;br /&gt;
&lt;br /&gt;
    Components like ReviewDetail and ErrorBoundary will have unit tests to ensure error handling and data display work as expected.&lt;br /&gt;
&lt;br /&gt;
    Integration Tests:&lt;br /&gt;
&lt;br /&gt;
    Verify that data flows correctly between components, especially between ReviewSummaryList and ReviewDetail.&lt;br /&gt;
&lt;br /&gt;
    End-to-End Tests:&lt;br /&gt;
&lt;br /&gt;
    Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Development Environment Setup ===&lt;br /&gt;
* '''Install React and TypeScript''': Initialize a TypeScript and React setup, configuring linting and testing tools.  &lt;br /&gt;
* '''Configure API Integration''': Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Component Development Process ===&lt;br /&gt;
* '''Step-by-Step Development for Core Components''':&lt;br /&gt;
  1. **Notification Management Page Components**:&lt;br /&gt;
     * '''NotificationList''':&lt;br /&gt;
       * '''Data Fetching''': Use a container to call the backend API, retrieving notifications based on user permissions.  &lt;br /&gt;
       * '''Display''': Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
     * '''NotificationForm''':&lt;br /&gt;
       * '''Role Validation''': Only accessible to TAs or higher, as verified through `AuthContext`.  &lt;br /&gt;
       * '''Form Fields''': Include title, message, and course selection with validation.  &lt;br /&gt;
       * '''Submission''': On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
&lt;br /&gt;
  2. **Institution Management Page Components**:&lt;br /&gt;
     * '''InstitutionList''':&lt;br /&gt;
       * '''Data Loading''': The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).  &lt;br /&gt;
       * '''Rendering''': Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
     * '''InstitutionForm''':&lt;br /&gt;
       * '''Authorization Check''': Only `INSTRUCTOR` or `ADMIN` roles can access this form.  &lt;br /&gt;
       * '''Form Fields''': Fields include institution name, address, and details, with backend validation.  &lt;br /&gt;
       * '''Save and Update''': Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
=== 5.3 State Management ===&lt;br /&gt;
* **Global State with Context API**: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.  &lt;br /&gt;
* **Local State**: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
=== 5.4 Testing Strategy ===&lt;br /&gt;
* **Unit Tests**:  &lt;br /&gt;
  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
* **Integration Tests**:  &lt;br /&gt;
  * '''Objective''': Verify interactions between components.  &lt;br /&gt;
  * '''Process''': Complete page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is created.&lt;br /&gt;
* **End-to-End Tests**:  &lt;br /&gt;
  * '''Objective''': Validate complete user flows and role-based access.  &lt;br /&gt;
  * '''Process''': Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
=== 5.5 API Integration ===&lt;br /&gt;
* **RESTful API Design**: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.  &lt;br /&gt;
* **Error Handling**: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159544</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159544"/>
		<updated>2024-11-14T04:28:37Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
==1. Objective and Goals==&lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.&lt;br /&gt;
&lt;br /&gt;
Key Goals:&lt;br /&gt;
    1.Deliver an organized and clean display of student review summaries.&lt;br /&gt;
    2.Create a responsive design adaptable to various screen sizes and devices.&lt;br /&gt;
    3.Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
==2. Scope==&lt;br /&gt;
- Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.&lt;br /&gt;
&lt;br /&gt;
- Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
==3. System Architecture==&lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
==4. Technical Specifications and Design Patterns==&lt;br /&gt;
4.1 Component Design and Structure&lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.&lt;br /&gt;
&lt;br /&gt;
    Core Components for Report Review UI:&lt;br /&gt;
&lt;br /&gt;
    ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.&lt;br /&gt;
    ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.&lt;br /&gt;
    ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
    Role management will ensure only instructors can access the Report Review page. Key elements include:&lt;br /&gt;
&lt;br /&gt;
    Role Enumeration (ROLE Enum): Define roles like INSTRUCTOR to control access to the Report Review UI.&lt;br /&gt;
    Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as &lt;br /&gt;
    AuthContext.hasPermission('view_reviews'), to control access based on user roles.&lt;br /&gt;
    Conditional Rendering: Use AuthContext to ensure only users with the INSTRUCTOR role can view the ReviewSummaryList.&lt;br /&gt;
&lt;br /&gt;
4.3 Application of Design Patterns&lt;br /&gt;
    Container-Presenter Pattern:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Separate data-fetching logic from display logic for easier maintenance.&lt;br /&gt;
    Application: A container component (e.g., ReviewSummaryPageContainer) will handle data fetching and pass the data to presentational components like ReviewSummaryList.&lt;br /&gt;
    Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
    Error Handling Pattern with Error Boundaries:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Capture and manage errors for smoother user experience and reliability.&lt;br /&gt;
    Application: Use an ErrorBoundary component to handle errors within the ReviewSummaryList and ReviewDetail components.&lt;br /&gt;
    Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
4.4 TypeScript for Static Typing&lt;br /&gt;
    TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as ReviewSummary, will define expected &lt;br /&gt;
    data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
4.5 Testing Strategy&lt;br /&gt;
    Unit Tests:&lt;br /&gt;
&lt;br /&gt;
    Components like ReviewDetail and ErrorBoundary will have unit tests to ensure error handling and data display work as expected.&lt;br /&gt;
&lt;br /&gt;
    Integration Tests:&lt;br /&gt;
&lt;br /&gt;
    Verify that data flows correctly between components, especially between ReviewSummaryList and ReviewDetail.&lt;br /&gt;
&lt;br /&gt;
    End-to-End Tests:&lt;br /&gt;
&lt;br /&gt;
    Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
==5. Implementation Plan==&lt;br /&gt;
&lt;br /&gt;
5.1 Development Environment Setup&lt;br /&gt;
	Install React and TypeScript: Initialize a TypeScript and React setup, configuring linting and testing tools.&lt;br /&gt;
	Configure API Integration: Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
5.2 Component Development Process&lt;br /&gt;
	Step-by-Step Development for Core Components:&lt;br /&gt;
	1. Notification Management Page Components:&lt;br /&gt;
	  NotificationList:&lt;br /&gt;
	  Data Fetching: Use a container to call the backend API, retrieving notifications based on user permissions.&lt;br /&gt;
	  Display: Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
	  NotificationForm:&lt;br /&gt;
	  Role Validation: Only accessible to TAs or higher, as verified through `AuthContext`.&lt;br /&gt;
	  Form Fields: Include title, message, and course selection with validation.&lt;br /&gt;
	  Submission: On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
	2. Institution Management Page Components:&lt;br /&gt;
	  InstitutionList:&lt;br /&gt;
	  Data Loading: The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).&lt;br /&gt;
	  Rendering: Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
	  InstitutionForm:&lt;br /&gt;
	  Authorization Check: Only `INSTRUCTOR` or `ADMIN` roles can access this form.&lt;br /&gt;
	  Form Fields: Fields include institution name, address, and details, with backend validation.&lt;br /&gt;
	  Save and Update: Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
5.3 State Management&lt;br /&gt;
	1. Global State with Context API: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.&lt;br /&gt;
	2. Local State: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
5.4 Testing Strategy&lt;br /&gt;
	1. Unit Tests:&lt;br /&gt;
	  Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
	2. Integration Tests:&lt;br /&gt;
	  Objective: Verify interactions between components.&lt;br /&gt;
	  Process: Complete-page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new &lt;br /&gt;
      notification is created.&lt;br /&gt;
	3. End-to-End Tests:&lt;br /&gt;
	  Objective: Validate complete user flows and role-based access.&lt;br /&gt;
	  Process: Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
5.5 API Integration&lt;br /&gt;
	  RESTful API Design: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.&lt;br /&gt;
	  Error Handling: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159543</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159543"/>
		<updated>2024-11-14T04:04:04Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
==1. Objective and Goals==&lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.&lt;br /&gt;
&lt;br /&gt;
Key Goals:&lt;br /&gt;
    1.Deliver an organized and clean display of student review summaries.&lt;br /&gt;
    2.Create a responsive design adaptable to various screen sizes and devices.&lt;br /&gt;
    3.Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
==2. Scope==&lt;br /&gt;
- Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.&lt;br /&gt;
&lt;br /&gt;
- Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
==3. System Architecture==&lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
==4. Technical Specifications and Design Patterns==&lt;br /&gt;
4.1 Component Design and Structure&lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.&lt;br /&gt;
&lt;br /&gt;
    Core Components for Report Review UI:&lt;br /&gt;
&lt;br /&gt;
    ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.&lt;br /&gt;
    ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.&lt;br /&gt;
    ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
    Role management will ensure only instructors can access the Report Review page. Key elements include:&lt;br /&gt;
&lt;br /&gt;
    Role Enumeration (ROLE Enum): Define roles like INSTRUCTOR to control access to the Report Review UI.&lt;br /&gt;
    Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as &lt;br /&gt;
    AuthContext.hasPermission('view_reviews'), to control access based on user roles.&lt;br /&gt;
    Conditional Rendering: Use AuthContext to ensure only users with the INSTRUCTOR role can view the ReviewSummaryList.&lt;br /&gt;
&lt;br /&gt;
4.3 Application of Design Patterns&lt;br /&gt;
    Container-Presenter Pattern:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Separate data-fetching logic from display logic for easier maintenance.&lt;br /&gt;
    Application: A container component (e.g., ReviewSummaryPageContainer) will handle data fetching and pass the data to presentational components like ReviewSummaryList.&lt;br /&gt;
    Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
    Error Handling Pattern with Error Boundaries:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Capture and manage errors for smoother user experience and reliability.&lt;br /&gt;
    Application: Use an ErrorBoundary component to handle errors within the ReviewSummaryList and ReviewDetail components.&lt;br /&gt;
    Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
4.4 TypeScript for Static Typing&lt;br /&gt;
    TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as ReviewSummary, will define expected &lt;br /&gt;
    data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
4.5 Testing Strategy&lt;br /&gt;
    Unit Tests:&lt;br /&gt;
&lt;br /&gt;
    Components like ReviewDetail and ErrorBoundary will have unit tests to ensure error handling and data display work as expected.&lt;br /&gt;
&lt;br /&gt;
    Integration Tests:&lt;br /&gt;
&lt;br /&gt;
    Verify that data flows correctly between components, especially between ReviewSummaryList and ReviewDetail.&lt;br /&gt;
&lt;br /&gt;
    End-to-End Tests:&lt;br /&gt;
&lt;br /&gt;
    Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
==5. Implementation Plan==&lt;br /&gt;
&lt;br /&gt;
5.1 Development Environment Setup&lt;br /&gt;
	- Install React and TypeScript: Initialize a TypeScript and React setup, configuring linting and testing tools.&lt;br /&gt;
	- Configure API Integration: Define REST API endpoints for backend interaction, with TypeScript enforcing the response structure.&lt;br /&gt;
&lt;br /&gt;
5.2 Component Development Process&lt;br /&gt;
	Step-by-Step Development for Core Components:&lt;br /&gt;
	1. Notification Management Page Components:&lt;br /&gt;
	- NotificationList:&lt;br /&gt;
	- Data Fetching: Use a container to call the backend API, retrieving notifications based on user permissions.&lt;br /&gt;
	- Display: Render a list with notification summaries and active/inactive states. Notifications include a toggle to activate/deactivate, implemented by `NotificationToggle`.&lt;br /&gt;
	- NotificationForm:&lt;br /&gt;
	- Role Validation: Only accessible to TAs or higher, as verified through `AuthContext`.&lt;br /&gt;
	- Form Fields: Include title, message, and course selection with validation.&lt;br /&gt;
	- Submission: On submission, the form creates or updates a notification and refreshes `NotificationList`.&lt;br /&gt;
	2. Institution Management Page Components:&lt;br /&gt;
	- InstitutionList:&lt;br /&gt;
	- Data Loading: The container fetches institutions for authorized users (e.g., `INSTRUCTOR` or `ADMIN`).&lt;br /&gt;
	- Rendering: Display institution names, associated courses, and additional information, with pagination and search for easy navigation.&lt;br /&gt;
	- InstitutionForm:&lt;br /&gt;
	- Authorization Check: Only `INSTRUCTOR` or `ADMIN` roles can access this form.&lt;br /&gt;
	- Form Fields: Fields include institution name, address, and details, with backend validation.&lt;br /&gt;
	- Save and Update: Submission calls the backend to create or update institution data.&lt;br /&gt;
&lt;br /&gt;
5.3 State Management&lt;br /&gt;
	1. Global State with Context API: The `AuthContext` and `NotificationContext` manage global states, including user roles and notification status.&lt;br /&gt;
	2. Local State: Component-level states manage form data, loading status, and error messages, scoped to each component to prevent unnecessary re-renders.&lt;br /&gt;
&lt;br /&gt;
5.4 Testing Strategy&lt;br /&gt;
	1. Unit Tests:&lt;br /&gt;
	- Components like `NotificationToggle` and `InstitutionForm` will be individually tested with Jest and React Testing Library for expected behavior.&lt;br /&gt;
	2. Integration Tests:&lt;br /&gt;
	- Objective: Verify interactions between components.&lt;br /&gt;
	- Process: Complete-page testing to confirm permissions, data flows, and interactions work together. Example: Verifying that `NotificationList` updates when a new notification is created.&lt;br /&gt;
	3. End-to-End Tests:&lt;br /&gt;
	- Objective: Validate complete user flows and role-based access.&lt;br /&gt;
	- Process: Use Cypress to simulate real user actions, ensuring each role sees authorized components only.&lt;br /&gt;
&lt;br /&gt;
5.5 API Integration&lt;br /&gt;
	- RESTful API Design: API interactions are defined using REST conventions, with TypeScript enforcing response structure integrity.&lt;br /&gt;
	- Error Handling: Components handle API errors, guiding users with relevant messages.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159542</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159542"/>
		<updated>2024-11-14T03:51:44Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
==1. Objective and Goals==&lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.&lt;br /&gt;
&lt;br /&gt;
Key Goals:&lt;br /&gt;
    1.Deliver an organized and clean display of student review summaries.&lt;br /&gt;
    2.Create a responsive design adaptable to various screen sizes and devices.&lt;br /&gt;
    3.Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
==2. Scope==&lt;br /&gt;
- Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.&lt;br /&gt;
&lt;br /&gt;
- Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
==3. System Architecture==&lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
==4. Technical Specifications and Design Patterns==&lt;br /&gt;
4.1 Component Design and Structure&lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.&lt;br /&gt;
&lt;br /&gt;
Core Components for Report Review UI:&lt;br /&gt;
&lt;br /&gt;
    ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.&lt;br /&gt;
    ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.&lt;br /&gt;
    ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
4.2 Role Management System&lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:&lt;br /&gt;
&lt;br /&gt;
    Role Enumeration (ROLE Enum): Define roles like INSTRUCTOR to control access to the Report Review UI.&lt;br /&gt;
    Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as &lt;br /&gt;
    AuthContext.hasPermission('view_reviews'), to control access based on user roles.&lt;br /&gt;
    Conditional Rendering: Use AuthContext to ensure only users with the INSTRUCTOR role can view the ReviewSummaryList.&lt;br /&gt;
&lt;br /&gt;
4.3 Application of Design Patterns&lt;br /&gt;
Container-Presenter Pattern:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Separate data-fetching logic from display logic for easier maintenance.&lt;br /&gt;
    Application: A container component (e.g., ReviewSummaryPageContainer) will handle data fetching and pass the data to presentational components like ReviewSummaryList.&lt;br /&gt;
    Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
    Error Handling Pattern with Error Boundaries:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Capture and manage errors for smoother user experience and reliability.&lt;br /&gt;
    Application: Use an ErrorBoundary component to handle errors within the ReviewSummaryList and ReviewDetail components.&lt;br /&gt;
    Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
4.4 TypeScript for Static Typing&lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as ReviewSummary, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
4.5 Testing Strategy&lt;br /&gt;
Unit Tests:&lt;br /&gt;
&lt;br /&gt;
    Components like ReviewDetail and ErrorBoundary will have unit tests to ensure error handling and data display work as expected.&lt;br /&gt;
&lt;br /&gt;
Integration Tests:&lt;br /&gt;
&lt;br /&gt;
    Verify that data flows correctly between components, especially between ReviewSummaryList and ReviewDetail.&lt;br /&gt;
&lt;br /&gt;
End-to-End Tests:&lt;br /&gt;
&lt;br /&gt;
    Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159541</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159541"/>
		<updated>2024-11-14T03:50:50Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Overview===&lt;br /&gt;
This project will create a modern, responsive TypeScript and ReactJS interface for the Report Review page within Expertiza. It aims to present instructors with a summary of student reviews for each assignment. The design will prioritize simplicity and usability, providing instructors with a clear and effective way to review student feedback.&lt;br /&gt;
&lt;br /&gt;
==1. Objective and Goals==&lt;br /&gt;
Develop a TypeScript and React-based UI for the Report Review page, accessible only to instructors, which will be responsive, intuitive, and efficient.&lt;br /&gt;
&lt;br /&gt;
Key Goals:&lt;br /&gt;
    1.Deliver an organized and clean display of student review summaries.&lt;br /&gt;
    2.Create a responsive design adaptable to various screen sizes and devices.&lt;br /&gt;
    3.Implement robust error handling for reliable data display and ensure usability across the application.&lt;br /&gt;
&lt;br /&gt;
==2. Scope==&lt;br /&gt;
- Report Review Summary: Display individual review summaries per student for instructors, incorporating filtering and search functionalities to facilitate navigation.&lt;br /&gt;
&lt;br /&gt;
- Role-Based Access Control (RBAC): Limit access to this page strictly to instructors, ensuring students cannot view the review summary.&lt;br /&gt;
&lt;br /&gt;
==3. System Architecture==&lt;br /&gt;
The system architecture will use ReactJS with a focus on component reusability, TypeScript for type safety, and enhanced role-based access control. Components will communicate with the backend through RESTful APIs.&lt;br /&gt;
&lt;br /&gt;
==4. Technical Specifications and Design Patterns==&lt;br /&gt;
4.1 Component Design and Structure&lt;br /&gt;
The Report Review UI will include modular components for scalability, reusability, and role-based access control.&lt;br /&gt;
&lt;br /&gt;
Core Components for Report Review UI:&lt;br /&gt;
&lt;br /&gt;
    ReviewSummaryList: Displays a summary list of student reviews for a specific assignment.&lt;br /&gt;
    ReviewDetail: Shows detailed information for each review, accessible upon selecting a summary.&lt;br /&gt;
    ErrorBoundary: Wraps components to catch and display errors related to data fetching and rendering.&lt;br /&gt;
&lt;br /&gt;
4.2 Role Management System&lt;br /&gt;
Role management will ensure only instructors can access the Report Review page. Key elements include:&lt;br /&gt;
&lt;br /&gt;
    Role Enumeration (ROLE Enum): Define roles like INSTRUCTOR to control access to the Report Review UI.&lt;br /&gt;
    Centralized Authentication Context (AuthContext): Store and provide role information globally. This enables easy role checks, such as &lt;br /&gt;
    AuthContext.hasPermission('view_reviews'), to control access based on user roles.&lt;br /&gt;
    Conditional Rendering: Use AuthContext to ensure only users with the INSTRUCTOR role can view the ReviewSummaryList.&lt;br /&gt;
&lt;br /&gt;
4.3 Application of Design Patterns&lt;br /&gt;
Container-Presenter Pattern:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Separate data-fetching logic from display logic for easier maintenance.&lt;br /&gt;
    Application: A container component (e.g., ReviewSummaryPageContainer) will handle data fetching and pass the data to presentational components like ReviewSummaryList.&lt;br /&gt;
    Benefits: Clear separation of concerns makes components more readable and easier to test.&lt;br /&gt;
&lt;br /&gt;
Error Handling Pattern with Error Boundaries:&lt;br /&gt;
&lt;br /&gt;
    Purpose: Capture and manage errors for smoother user experience and reliability.&lt;br /&gt;
    Application: Use an ErrorBoundary component to handle errors within the ReviewSummaryList and ReviewDetail components.&lt;br /&gt;
    Benefits: Improves reliability by ensuring unexpected errors do not disrupt the entire page.&lt;br /&gt;
&lt;br /&gt;
4.4 TypeScript for Static Typing&lt;br /&gt;
TypeScript will be used throughout to enforce strict typing, reduce errors, and improve code readability. Custom types/interfaces, such as ReviewSummary, will define expected data structures for better integration with the backend API.&lt;br /&gt;
&lt;br /&gt;
4.5 Testing Strategy&lt;br /&gt;
Unit Tests:&lt;br /&gt;
&lt;br /&gt;
    Components like ReviewDetail and ErrorBoundary will have unit tests to ensure error handling and data display work as expected.&lt;br /&gt;
&lt;br /&gt;
Integration Tests:&lt;br /&gt;
&lt;br /&gt;
    Verify that data flows correctly between components, especially between ReviewSummaryList and ReviewDetail.&lt;br /&gt;
&lt;br /&gt;
End-to-End Tests:&lt;br /&gt;
&lt;br /&gt;
    Simulate instructor interactions to ensure only authorized users can access the review data, validating user flows from review list to detailed view.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159483</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159483"/>
		<updated>2024-11-13T05:11:11Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza is an open-source course management web application, built with Ruby on Rails, that is maintained by students and teaching staff across NC State and other universities. Additionally, Expertiza is used as a platform to help students learn how to work collaboratively and contribute to large applications concurrent with best practices and object oriented design and development. &lt;br /&gt;
&lt;br /&gt;
This project involves building the UI for report review, using React to create a responsive and intuitive experience. The page displays the review summary for each student for individual assignments. This view is only accessible to the instructor and not the students. The goal of this project is to create the user interface in a way to keep the visual simple and efficient.&lt;br /&gt;
&lt;br /&gt;
If you would like to learn more about Expertiza, please check the Expertiza wiki[1], or the GitHub pages [2],[3]. &lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This project will replace the current Ruby on Rails frontend for Expertiza’s Institution and Notification UIs with a modern, maintainable TypeScript and ReactJS solution. The goals are to enhance user experience, secure role-based access, and facilitate better communication and course management.&lt;br /&gt;
&lt;br /&gt;
==1. Objective and Goals==&lt;br /&gt;
Objective: Re-implement the frontend in TypeScript and ReactJS to improve maintainability, performance, and user experience, adhering to role-based access control and supporting effective notification and institution management.&lt;br /&gt;
&lt;br /&gt;
==2. Scope==&lt;br /&gt;
Objective: Re-implement the frontend in TypeScript and ReactJS to improve maintainability, performance, and user experience, adhering to role-based access control and supporting effective notification and institution management.&lt;br /&gt;
&lt;br /&gt;
==3. System Architecture==&lt;br /&gt;
Objective: Re-implement the frontend in TypeScript and ReactJS to improve maintainability, performance, and user experience, adhering to role-based access control and supporting effective notification and institution management.&lt;br /&gt;
&lt;br /&gt;
==4. Technical Specifications and Design Patterns==&lt;br /&gt;
Objective: Re-implement the frontend in TypeScript and ReactJS to improve maintainability, performance, and user experience, adhering to role-based access control and supporting effective notification and institution management.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159481</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159481"/>
		<updated>2024-11-13T05:07:03Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza is an open-source course management web application, built with Ruby on Rails, that is maintained by students and teaching staff across NC State and other universities. Additionally, Expertiza is used as a platform to help students learn how to work collaboratively and contribute to large applications concurrent with best practices and object oriented design and development. &lt;br /&gt;
&lt;br /&gt;
This project involves building the UI for report review, using React to create a responsive and intuitive experience. The page displays the review summary for each student for individual assignments. This view is only accessible to the instructor and not the students. The goal of this project is to create the user interface in a way to keep the visual simple and efficient.&lt;br /&gt;
&lt;br /&gt;
If you would like to learn more about Expertiza, please check the Expertiza wiki[1], or the GitHub pages [2],[3]. &lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This project will replace the current Ruby on Rails frontend for Expertiza’s Institution and Notification UIs with a modern, maintainable TypeScript and ReactJS solution. The goals are to enhance user experience, secure role-based access, and facilitate better communication and course management.&lt;br /&gt;
&lt;br /&gt;
====Files Changed====&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159480</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159480"/>
		<updated>2024-11-13T05:03:39Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza is an open-source course management web application, built with Ruby on Rails, that is maintained by students and teaching staff across NC State and other universities. Additionally, Expertiza is used as a platform to help students learn how to work collaboratively and contribute to large applications concurrent with best practices and object oriented design and development. &lt;br /&gt;
&lt;br /&gt;
This project involves building the UI for report review, using React to create a responsive and intuitive experience. The page displays the review summary for each student for individual assignments. This view is only accessible to the instructor and not the students. The goal of this project is to create the user interface in a way to keep the visual simple and efficient.&lt;br /&gt;
&lt;br /&gt;
What needs to be done:&lt;br /&gt;
&lt;br /&gt;
1. Intuitive Design: Create a user-friendly interface that is easy to navigate and has enough spacing to ensure all the fetched information is being displayed in an orderly and clean fashion.&lt;br /&gt;
2. Responsive Design: The UI should be able to hold its design across multiple devices (mobile, laptop, tablet) and screen sizes (fullscreen, windowed).&lt;br /&gt;
3. Error Handling: Consider all possible data errors (invalid data, missing data) while displaying the fetched information.&lt;br /&gt;
4. Testing: Ensure that all the aspects of the component are functioning as intended, and make sure that the error handling is being taken care of. The reliability of the UI is &lt;br /&gt;
   maintained.&lt;br /&gt;
If you would like to learn more about Expertiza, please check the Expertiza wiki[1], or the GitHub pages [2],[3]. &lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This project will replace the current Ruby on Rails frontend for Expertiza’s Institution and Notification UIs with a modern, maintainable TypeScript and ReactJS solution. The goals are to enhance user experience, secure role-based access, and facilitate better communication and course management.&lt;br /&gt;
====Files Changed====&lt;br /&gt;
To provide access to our new Project Topics page, we added a new route and header to the following files, as well as updated the README.md file with instructions to add a user. We use the added user to view and test the student view. The current Expertiza application already has an admin user implemented which we used to test the admin/instructor display. &lt;br /&gt;
*src/App.tsx&lt;br /&gt;
*src/layout/Header.tsx&lt;br /&gt;
*README.md&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159477</id>
		<title>CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2494._UI_for_Report_Review_for_Assignment&amp;diff=159477"/>
		<updated>2024-11-13T05:02:20Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: Created page with &amp;quot;==Background==  Expertiza is an open-source course management web application, built with Ruby on Rails, that is maintained by students and teaching staff across NC State and other universities. Additionally, Expertiza is used as a platform to help students learn how to work collaboratively and contribute to large applications concurrent with best practices and object oriented design and development.   This project involves building the UI for report review, using React...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background== &lt;br /&gt;
Expertiza is an open-source course management web application, built with Ruby on Rails, that is maintained by students and teaching staff across NC State and other universities. Additionally, Expertiza is used as a platform to help students learn how to work collaboratively and contribute to large applications concurrent with best practices and object oriented design and development. &lt;br /&gt;
&lt;br /&gt;
This project involves building the UI for report review, using React to create a responsive and intuitive experience. The page displays the review summary for each student for individual assignments. This view is only accessible to the instructor and not the students. The goal of this project is to create the user interface in a way to keep the visual simple and efficient.&lt;br /&gt;
&lt;br /&gt;
What needs to be done:&lt;br /&gt;
&lt;br /&gt;
1. Intuitive Design: Create a user-friendly interface that is easy to navigate and has enough spacing to ensure all the fetched information is being displayed in an orderly and &lt;br /&gt;
   clean fashion.&lt;br /&gt;
2. Responsive Design: The UI should be able to hold its design across multiple devices (mobile, laptop, tablet) and screen sizes (fullscreen, windowed).&lt;br /&gt;
3. Error Handling: Consider all possible data errors (invalid data, missing data) while displaying the fetched information.&lt;br /&gt;
4. Testing: Ensure that all the aspects of the component are functioning as intended, and make sure that the error handling is being taken care of. The reliability of the UI is &lt;br /&gt;
   maintained.&lt;br /&gt;
If you would like to learn more about Expertiza, please check the Expertiza wiki[1], or the GitHub pages [2],[3]. &lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
This project will replace the current Ruby on Rails frontend for Expertiza’s Institution and Notification UIs with a modern, maintainable TypeScript and ReactJS solution. The goals are to enhance user experience, secure role-based access, and facilitate better communication and course management.&lt;br /&gt;
====Files Changed====&lt;br /&gt;
To provide access to our new Project Topics page, we added a new route and header to the following files, as well as updated the README.md file with instructions to add a user. We use the added user to view and test the student view. The current Expertiza application already has an admin user implemented which we used to test the admin/instructor display. &lt;br /&gt;
*src/App.tsx&lt;br /&gt;
*src/layout/Header.tsx&lt;br /&gt;
*README.md&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
==Links ==&lt;br /&gt;
*Github Repository: &lt;br /&gt;
*Pull Request: &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
[1]https://wiki.expertiza.ncsu.edu/index.php?title=Main_Page&lt;br /&gt;
&lt;br /&gt;
[2]https://github.com/expertiza/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
[3]https://github.com/expertiza/reimplementation-back-end&lt;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=159474</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=159474"/>
		<updated>2024-11-13T04:54:12Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2024 - E2450. Refactor assignments_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2451. Reimplement feedback_response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2452. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2453. Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2454. Refactor student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2455. Refactor sign_up_sheet_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb (Phase 2 - Design Document)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2457. GitHub metrics integration]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2458. User management and users table]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2459. View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2460 Mentor-Meeting Management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI for Courses]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI and Backend for Courses]]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2462._UI_for_Questionnaires CSC/ECE 517 Fall 2024 - E2462. UI for Questionnaire.rb]&lt;br /&gt;
* [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2463_Implement_Front_End_for_Student_Task_List CSC/ECE 517 Fall 2024 - E2463. UI for Student Task List]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign_up_Topics)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2465. UI for Institutions and Notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2466. UI for Impersonate User]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2467. UI for View Submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2468. Reimplement due_date]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2469. Reimplement grades/view_team]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2470. Reimplement grades_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2471. Reimplement logger]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2472. Reimplement responses_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2473. Reimplement sign up topic.rb as project topic.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2474. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2475. Reimplement student_task view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2476. Reimplement student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2477. Reimplement suggestion_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2478. Reimplement the Question hierarchy as Item hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2479. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2480. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2481 Reimplement response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2483. Reimplement Notification Controller and Model]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2484. Reimplement participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2485. Allow reviewers to bid on what to review]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2487. Reimplement authorization_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2488 Reimplementation of Add TA to course]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2489. Create a UI for Assignment Edit page &amp;quot;Etc&amp;quot; tab in ReactJS]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2491.UI for View assignments in Courses view]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2492. UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2493. UI for Assign Reviewers]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2494. UI for Report Review for Assignment]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2401 Refactor Graphql API endpoint for contribution metrics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2402 Refactor Graphql API endpoint for repositories]]&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2464_UI_for_Project_Topics_(was:_Sign_up_Topics)&amp;diff=157390</id>
		<title>CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign up Topics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2464_UI_for_Project_Topics_(was:_Sign_up_Topics)&amp;diff=157390"/>
		<updated>2024-10-29T04:53:58Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
==Background== &lt;br /&gt;
Expertiza is an open-source course management web application, that is maintained by students and teaching staff across NC State and other universities. Specifically, Expertiza is used as a platform to help students learn how to work collaboratively on large Object Oriented Programming Assignments. If you would like to learn more about Expertiza, please check the Expertiza wiki[1], or the GitHub page [2]. For our project in particular, we were tasked with improving and extending the user interface for the Expertiza Project Topics page where students and teams choose and sign up for project topics.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2464_UI_for_Project_Topics_(was:_Sign_up_Topics)&amp;diff=157388</id>
		<title>CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign up Topics)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2464_UI_for_Project_Topics_(was:_Sign_up_Topics)&amp;diff=157388"/>
		<updated>2024-10-29T04:50:29Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: Created page with &amp;quot;== Relevant Links == *Github Repository: https://github.com/arlee-shelby/reimplementation-front-end  == Team == ===Mentor=== * Sahil Sawant  === Members === * Arlee Shelby (ashelby@ncsu.edu) * Aryan Tapkire (atapkir@ncsu.edu) * Haojie Zhou (hzhou33@ncsu.edu)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Relevant Links ==&lt;br /&gt;
*Github Repository: https://github.com/arlee-shelby/reimplementation-front-end&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
===Mentor===&lt;br /&gt;
* Sahil Sawant&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* Arlee Shelby (ashelby@ncsu.edu)&lt;br /&gt;
* Aryan Tapkire (atapkir@ncsu.edu)&lt;br /&gt;
* Haojie Zhou (hzhou33@ncsu.edu)&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=157373</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=157373"/>
		<updated>2024-10-29T04:20:49Z</updated>

		<summary type="html">&lt;p&gt;Atapkir: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2024 - E2454. Refactor student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2455. Refactor sign_up_sheet_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2459. View for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2461. UI for Courses]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2465. UI for Institutions and Notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2466. UI for Impersonate User]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2467. UI for View Submissions]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2469. Reimplement grades/view_team]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2470. Reimplement grades_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2478. Reimplement the Question hierarchy as Item hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2480. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2460 Mentor-Meeting Management]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - G2401 Refactor Graphql API endpoint for contribution metrics]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2452. Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2464 UI for Project Topics (was: Sign_up_Topics)]]&lt;/div&gt;</summary>
		<author><name>Atapkir</name></author>
	</entry>
</feed>