<?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=Hzhou33</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=Hzhou33"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Hzhou33"/>
	<updated>2026-07-05T14:28:20Z</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=160667</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=160667"/>
		<updated>2024-12-04T04:41:15Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Control Flow to access the concerned screens */&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;
&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;
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;
== 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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_instructor_view.jpg&amp;diff=160666</id>
		<title>File:Teammate instructor view.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_instructor_view.jpg&amp;diff=160666"/>
		<updated>2024-12-04T04:39:50Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160664</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=160664"/>
		<updated>2024-12-04T04:37:36Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Design */&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;
&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;
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;
== 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>Hzhou33</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=160658</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=160658"/>
		<updated>2024-12-04T04:34:18Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Design */&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;
&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;
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 administrators, 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;
&lt;br /&gt;
&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;
== 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>Hzhou33</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=160610</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=160610"/>
		<updated>2024-12-04T04:03:47Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Control Flow to access the concerned screens */&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;
&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;
[[File:Teammate view uml.jpg|800px]]&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;
== 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>Hzhou33</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=160609</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=160609"/>
		<updated>2024-12-04T04:03:30Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Control Flow to access the concerned screens */&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;
&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;
[[File:Teammate view uml.jpg|800px]]&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;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
When the student presses the button.&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&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;
[[File:Teammate view student recevied.jpg|800px]]&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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_student_recevied.jpg&amp;diff=160608</id>
		<title>File:Teammate view student recevied.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_student_recevied.jpg&amp;diff=160608"/>
		<updated>2024-12-04T04:01:09Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160604</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=160604"/>
		<updated>2024-12-04T03:56:08Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &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;
&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;
[[File:Teammate view uml.jpg|800px]]&lt;br /&gt;
=== Control Flow to access the concerned screens ===&lt;br /&gt;
[[File:Teammate view student off.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
[[File:Teammate view student on.jpg|800px]]&lt;br /&gt;
&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: 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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_student_off.jpg&amp;diff=160600</id>
		<title>File:Teammate view student off.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_student_off.jpg&amp;diff=160600"/>
		<updated>2024-12-04T03:52:54Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_student_on.jpg&amp;diff=160597</id>
		<title>File:Teammate view student on.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_student_on.jpg&amp;diff=160597"/>
		<updated>2024-12-04T03:52:06Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160583</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=160583"/>
		<updated>2024-12-04T03:46:48Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Design */&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;
&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;
[[File:Teammate view uml.jpg|800px]]&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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_uml.jpg&amp;diff=160582</id>
		<title>File:Teammate view uml.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_view_uml.jpg&amp;diff=160582"/>
		<updated>2024-12-04T03:46:19Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160573</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=160573"/>
		<updated>2024-12-04T03:42:30Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Specifications */&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;
&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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_given_only.jpg&amp;diff=160568</id>
		<title>File:Teammate given only.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_given_only.jpg&amp;diff=160568"/>
		<updated>2024-12-04T03:41:05Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160548</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=160548"/>
		<updated>2024-12-04T03:32:03Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Specifications */&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;
[[File:Teammate given.jpg|1000px]]&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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_given.jpg&amp;diff=160546</id>
		<title>File:Teammate given.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_given.jpg&amp;diff=160546"/>
		<updated>2024-12-04T03:31:39Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160544</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=160544"/>
		<updated>2024-12-04T03:29:06Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Specifications */&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;
[[File:Teammate student view.jpg|1000px]]&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>Hzhou33</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_student_view.jpg&amp;diff=160539</id>
		<title>File:Teammate student view.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Teammate_student_view.jpg&amp;diff=160539"/>
		<updated>2024-12-04T03:25:06Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=160512</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=160512"/>
		<updated>2024-12-04T03:13:03Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Specifications */&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;
*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>Hzhou33</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=159560</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=159560"/>
		<updated>2024-11-14T16:29:58Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 5.5 API Integration */&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;
== 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>Hzhou33</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=159559</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=159559"/>
		<updated>2024-11-14T16:29:46Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 5.4 Testing Strategy */&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;
== 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>Hzhou33</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=159558</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=159558"/>
		<updated>2024-11-14T16:29:03Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 5.2 Component Development Process */&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;
== 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>Hzhou33</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=159557</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=159557"/>
		<updated>2024-11-14T16:28:25Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4.5 Testing Strategy */&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;
== 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>Hzhou33</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=159556</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=159556"/>
		<updated>2024-11-14T16:27:36Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4.3 Application of Design Patterns */&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>Hzhou33</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=159555</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=159555"/>
		<updated>2024-11-14T16:26:31Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4.2 Enhanced Role Management System */&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>Hzhou33</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=159554</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=159554"/>
		<updated>2024-11-14T16:26:04Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4.1 Component Design and Structure */&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>Hzhou33</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=159553</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=159553"/>
		<updated>2024-11-14T16:25:43Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 2. Scope */&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>Hzhou33</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=159498</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=159498"/>
		<updated>2024-11-13T14:45:49Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* Overview */&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 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 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;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=159497</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=159497"/>
		<updated>2024-11-13T14:45:14Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 2. Scope */&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;
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 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;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=159496</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=159496"/>
		<updated>2024-11-13T14:44:15Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4. Technical Specifications and Design Patterns */&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;
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;
- Notification Management: A page for TAs and above to create, view, and manage course-specific notifications.&lt;br /&gt;
&lt;br /&gt;
- Institution Management: An interface for Instructors and higher roles to manage institutions, with strict access control.&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 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;br /&gt;
&lt;br /&gt;
[4]https://wiki.expertiza.ncsu.edu/index.php?title=Sign_up_topics&lt;/div&gt;</summary>
		<author><name>Hzhou33</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=159495</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=159495"/>
		<updated>2024-11-13T14:42:55Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4. Technical Specifications and Design Patterns */&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;
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;
- Notification Management: A page for TAs and above to create, view, and manage course-specific notifications.&lt;br /&gt;
&lt;br /&gt;
- Institution Management: An interface for Instructors and higher roles to manage institutions, with strict access control.&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 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;
== 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>Hzhou33</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=159494</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=159494"/>
		<updated>2024-11-13T14:40:18Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 1. Objective and Goals */&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;
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;
- Notification Management: A page for TAs and above to create, view, and manage course-specific notifications.&lt;br /&gt;
&lt;br /&gt;
- Institution Management: An interface for Instructors and higher roles to manage institutions, with strict access control.&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;
Components are structured for modularity, reusability, and independent state management.&lt;br /&gt;
&lt;br /&gt;
Core Components for Notification and Institution UIs:&lt;br /&gt;
&lt;br /&gt;
- Notification Components:&lt;br /&gt;
  - `NotificationList`: Fetches and displays notifications based on user permissions.&lt;br /&gt;
  - `NotificationForm`: Form for creating or updating notifications, with validation.&lt;br /&gt;
  - `NotificationToggle`: Toggle control for notification status, allowing activation or deactivation.&lt;br /&gt;
  &lt;br /&gt;
- Institution Components:&lt;br /&gt;
  - `InstitutionList`: Displays a list of institutions accessible to the logged-in user.&lt;br /&gt;
  - `InstitutionForm`: Handles institution creation and editing, restricted to instructors or administrators.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
&lt;br /&gt;
The role management system integrates directly with the component design to ensure that user roles control access to each component. This enhanced system leverages the following:&lt;br /&gt;
&lt;br /&gt;
1. Role Enumeration (ROLE Enum)&lt;br /&gt;
   - Define a `ROLE` enum with roles such as `SUPER_ADMIN`, `ADMIN`, `INSTRUCTOR`, `TA`, and `STUDENT` to establish consistent role references across components.&lt;br /&gt;
   &lt;br /&gt;
2. Centralized Authentication Context (`AuthContext`)&lt;br /&gt;
   - Utilize `AuthContext` to manage and provide access to role information across the application. This context will store user roles, permissions, and session information. Components can use `AuthContext` to conditionally render or enable features based on the user’s role.&lt;br /&gt;
   - Example: `AuthContext.hasPermission('manage_institution')` checks if the user has the `INSTRUCTOR` or `ADMIN` role, determining if they can access institution management features.&lt;br /&gt;
&lt;br /&gt;
3. Role-Based Conditional Rendering&lt;br /&gt;
   - Roles control component visibility: for instance, `NotificationForm` and `InstitutionForm` are only rendered for TAs or higher and Instructors or higher, respectively.&lt;br /&gt;
   - Boolean expressions like `isAdminOrInstructor` simplify access checks and keep the role logic modular and maintainable.&lt;br /&gt;
&lt;br /&gt;
4. Identity Verification in Components&lt;br /&gt;
   - Role verification and conditional rendering ensure users only access authorized components.&lt;br /&gt;
   - Example for `InstitutionForm`: A conditional wrapper in the component checks `AuthContext` before rendering sensitive management forms.&lt;br /&gt;
&lt;br /&gt;
 4.3 Application of Design Patterns&lt;br /&gt;
1. Container-Presenter Pattern:&lt;br /&gt;
   - Purpose: Separate data-fetching logic from presentation to improve readability and testability.&lt;br /&gt;
   - Application: Each page will have a “container” component responsible for data-fetching (e.g., `InstitutionPageContainer`) and managing user permissions. The container passes data to presenter components (e.g., `InstitutionList` or `NotificationList`) for display.&lt;br /&gt;
   - Benefits: Enhances separation of concerns, making the components cleaner, modular, and easier to test.&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>Hzhou33</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=159493</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=159493"/>
		<updated>2024-11-13T12:56:55Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 2. Scope */&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;
- Notification Management: A page for TAs and above to create, view, and manage course-specific notifications.&lt;br /&gt;
&lt;br /&gt;
- Institution Management: An interface for Instructors and higher roles to manage institutions, with strict access control.&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;
Components are structured for modularity, reusability, and independent state management.&lt;br /&gt;
&lt;br /&gt;
Core Components for Notification and Institution UIs:&lt;br /&gt;
&lt;br /&gt;
- Notification Components:&lt;br /&gt;
  - `NotificationList`: Fetches and displays notifications based on user permissions.&lt;br /&gt;
  - `NotificationForm`: Form for creating or updating notifications, with validation.&lt;br /&gt;
  - `NotificationToggle`: Toggle control for notification status, allowing activation or deactivation.&lt;br /&gt;
  &lt;br /&gt;
- Institution Components:&lt;br /&gt;
  - `InstitutionList`: Displays a list of institutions accessible to the logged-in user.&lt;br /&gt;
  - `InstitutionForm`: Handles institution creation and editing, restricted to instructors or administrators.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
&lt;br /&gt;
The role management system integrates directly with the component design to ensure that user roles control access to each component. This enhanced system leverages the following:&lt;br /&gt;
&lt;br /&gt;
1. Role Enumeration (ROLE Enum)&lt;br /&gt;
   - Define a `ROLE` enum with roles such as `SUPER_ADMIN`, `ADMIN`, `INSTRUCTOR`, `TA`, and `STUDENT` to establish consistent role references across components.&lt;br /&gt;
   &lt;br /&gt;
2. Centralized Authentication Context (`AuthContext`)&lt;br /&gt;
   - Utilize `AuthContext` to manage and provide access to role information across the application. This context will store user roles, permissions, and session information. Components can use `AuthContext` to conditionally render or enable features based on the user’s role.&lt;br /&gt;
   - Example: `AuthContext.hasPermission('manage_institution')` checks if the user has the `INSTRUCTOR` or `ADMIN` role, determining if they can access institution management features.&lt;br /&gt;
&lt;br /&gt;
3. Role-Based Conditional Rendering&lt;br /&gt;
   - Roles control component visibility: for instance, `NotificationForm` and `InstitutionForm` are only rendered for TAs or higher and Instructors or higher, respectively.&lt;br /&gt;
   - Boolean expressions like `isAdminOrInstructor` simplify access checks and keep the role logic modular and maintainable.&lt;br /&gt;
&lt;br /&gt;
4. Identity Verification in Components&lt;br /&gt;
   - Role verification and conditional rendering ensure users only access authorized components.&lt;br /&gt;
   - Example for `InstitutionForm`: A conditional wrapper in the component checks `AuthContext` before rendering sensitive management forms.&lt;br /&gt;
&lt;br /&gt;
 4.3 Application of Design Patterns&lt;br /&gt;
1. Container-Presenter Pattern:&lt;br /&gt;
   - Purpose: Separate data-fetching logic from presentation to improve readability and testability.&lt;br /&gt;
   - Application: Each page will have a “container” component responsible for data-fetching (e.g., `InstitutionPageContainer`) and managing user permissions. The container passes data to presenter components (e.g., `InstitutionList` or `NotificationList`) for display.&lt;br /&gt;
   - Benefits: Enhances separation of concerns, making the components cleaner, modular, and easier to test.&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>Hzhou33</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=159492</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=159492"/>
		<updated>2024-11-13T12:56:46Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 2. Scope */&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;
- Notification Management: A page for TAs and above to create, view, and manage course-specific notifications.&lt;br /&gt;
- Institution Management: An interface for Instructors and higher roles to manage institutions, with strict access control.&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;
Components are structured for modularity, reusability, and independent state management.&lt;br /&gt;
&lt;br /&gt;
Core Components for Notification and Institution UIs:&lt;br /&gt;
&lt;br /&gt;
- Notification Components:&lt;br /&gt;
  - `NotificationList`: Fetches and displays notifications based on user permissions.&lt;br /&gt;
  - `NotificationForm`: Form for creating or updating notifications, with validation.&lt;br /&gt;
  - `NotificationToggle`: Toggle control for notification status, allowing activation or deactivation.&lt;br /&gt;
  &lt;br /&gt;
- Institution Components:&lt;br /&gt;
  - `InstitutionList`: Displays a list of institutions accessible to the logged-in user.&lt;br /&gt;
  - `InstitutionForm`: Handles institution creation and editing, restricted to instructors or administrators.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
&lt;br /&gt;
The role management system integrates directly with the component design to ensure that user roles control access to each component. This enhanced system leverages the following:&lt;br /&gt;
&lt;br /&gt;
1. Role Enumeration (ROLE Enum)&lt;br /&gt;
   - Define a `ROLE` enum with roles such as `SUPER_ADMIN`, `ADMIN`, `INSTRUCTOR`, `TA`, and `STUDENT` to establish consistent role references across components.&lt;br /&gt;
   &lt;br /&gt;
2. Centralized Authentication Context (`AuthContext`)&lt;br /&gt;
   - Utilize `AuthContext` to manage and provide access to role information across the application. This context will store user roles, permissions, and session information. Components can use `AuthContext` to conditionally render or enable features based on the user’s role.&lt;br /&gt;
   - Example: `AuthContext.hasPermission('manage_institution')` checks if the user has the `INSTRUCTOR` or `ADMIN` role, determining if they can access institution management features.&lt;br /&gt;
&lt;br /&gt;
3. Role-Based Conditional Rendering&lt;br /&gt;
   - Roles control component visibility: for instance, `NotificationForm` and `InstitutionForm` are only rendered for TAs or higher and Instructors or higher, respectively.&lt;br /&gt;
   - Boolean expressions like `isAdminOrInstructor` simplify access checks and keep the role logic modular and maintainable.&lt;br /&gt;
&lt;br /&gt;
4. Identity Verification in Components&lt;br /&gt;
   - Role verification and conditional rendering ensure users only access authorized components.&lt;br /&gt;
   - Example for `InstitutionForm`: A conditional wrapper in the component checks `AuthContext` before rendering sensitive management forms.&lt;br /&gt;
&lt;br /&gt;
 4.3 Application of Design Patterns&lt;br /&gt;
1. Container-Presenter Pattern:&lt;br /&gt;
   - Purpose: Separate data-fetching logic from presentation to improve readability and testability.&lt;br /&gt;
   - Application: Each page will have a “container” component responsible for data-fetching (e.g., `InstitutionPageContainer`) and managing user permissions. The container passes data to presenter components (e.g., `InstitutionList` or `NotificationList`) for display.&lt;br /&gt;
   - Benefits: Enhances separation of concerns, making the components cleaner, modular, and easier to test.&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>Hzhou33</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=159491</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=159491"/>
		<updated>2024-11-13T12:55:54Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4. Technical Specifications and Design Patterns */&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;
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;
Components are structured for modularity, reusability, and independent state management.&lt;br /&gt;
&lt;br /&gt;
Core Components for Notification and Institution UIs:&lt;br /&gt;
&lt;br /&gt;
- Notification Components:&lt;br /&gt;
  - `NotificationList`: Fetches and displays notifications based on user permissions.&lt;br /&gt;
  - `NotificationForm`: Form for creating or updating notifications, with validation.&lt;br /&gt;
  - `NotificationToggle`: Toggle control for notification status, allowing activation or deactivation.&lt;br /&gt;
  &lt;br /&gt;
- Institution Components:&lt;br /&gt;
  - `InstitutionList`: Displays a list of institutions accessible to the logged-in user.&lt;br /&gt;
  - `InstitutionForm`: Handles institution creation and editing, restricted to instructors or administrators.&lt;br /&gt;
&lt;br /&gt;
4.2 Enhanced Role Management System&lt;br /&gt;
&lt;br /&gt;
The role management system integrates directly with the component design to ensure that user roles control access to each component. This enhanced system leverages the following:&lt;br /&gt;
&lt;br /&gt;
1. Role Enumeration (ROLE Enum)&lt;br /&gt;
   - Define a `ROLE` enum with roles such as `SUPER_ADMIN`, `ADMIN`, `INSTRUCTOR`, `TA`, and `STUDENT` to establish consistent role references across components.&lt;br /&gt;
   &lt;br /&gt;
2. Centralized Authentication Context (`AuthContext`)&lt;br /&gt;
   - Utilize `AuthContext` to manage and provide access to role information across the application. This context will store user roles, permissions, and session information. Components can use `AuthContext` to conditionally render or enable features based on the user’s role.&lt;br /&gt;
   - Example: `AuthContext.hasPermission('manage_institution')` checks if the user has the `INSTRUCTOR` or `ADMIN` role, determining if they can access institution management features.&lt;br /&gt;
&lt;br /&gt;
3. Role-Based Conditional Rendering&lt;br /&gt;
   - Roles control component visibility: for instance, `NotificationForm` and `InstitutionForm` are only rendered for TAs or higher and Instructors or higher, respectively.&lt;br /&gt;
   - Boolean expressions like `isAdminOrInstructor` simplify access checks and keep the role logic modular and maintainable.&lt;br /&gt;
&lt;br /&gt;
4. Identity Verification in Components&lt;br /&gt;
   - Role verification and conditional rendering ensure users only access authorized components.&lt;br /&gt;
   - Example for `InstitutionForm`: A conditional wrapper in the component checks `AuthContext` before rendering sensitive management forms.&lt;br /&gt;
&lt;br /&gt;
 4.3 Application of Design Patterns&lt;br /&gt;
1. Container-Presenter Pattern:&lt;br /&gt;
   - Purpose: Separate data-fetching logic from presentation to improve readability and testability.&lt;br /&gt;
   - Application: Each page will have a “container” component responsible for data-fetching (e.g., `InstitutionPageContainer`) and managing user permissions. The container passes data to presenter components (e.g., `InstitutionList` or `NotificationList`) for display.&lt;br /&gt;
   - Benefits: Enhances separation of concerns, making the components cleaner, modular, and easier to test.&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>Hzhou33</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=159490</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=159490"/>
		<updated>2024-11-13T12:54:57Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 3. System Architecture */&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;
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;
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;
1. Container-Presenter Pattern:&lt;br /&gt;
   - Purpose: Separate data-fetching logic from presentation to improve readability and testability.&lt;br /&gt;
   - Application: Each page will have a “container” component responsible for data-fetching (e.g., `InstitutionPageContainer`) and managing user permissions. The container passes data to presenter components (e.g., `InstitutionList` or `NotificationList`) for display.&lt;br /&gt;
   - Benefits: Enhances separation of concerns, making the components cleaner, modular, and easier to test.&lt;br /&gt;
&lt;br /&gt;
2. Observer Pattern:&lt;br /&gt;
   - Purpose: Manage and display real-time notification updates.&lt;br /&gt;
   - Application: A global `NotificationContext` tracks active notifications, notifying subscribed components like `NotificationList` of any updates.&lt;br /&gt;
   - Benefits: Ensures that notifications display real-time updates, increasing engagement and immediacy for users managing or viewing notifications.&lt;br /&gt;
&lt;br /&gt;
3. Role-Based Access Control (RBAC) with Context API:&lt;br /&gt;
   - Purpose: Enforce access restrictions based on user roles.&lt;br /&gt;
   - Application: `AuthContext` centralizes user role and permission management, enabling components to query permissions and conditionally render based on the role.&lt;br /&gt;
   - Benefits: Centralizes access control, making it easy to audit and adjust permissions if needed.&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>Hzhou33</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=159489</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=159489"/>
		<updated>2024-11-13T12:53:55Z</updated>

		<summary type="html">&lt;p&gt;Hzhou33: /* 4. Technical Specifications and Design Patterns */&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;
1. Container-Presenter Pattern:&lt;br /&gt;
   - Purpose: Separate data-fetching logic from presentation to improve readability and testability.&lt;br /&gt;
   - Application: Each page will have a “container” component responsible for data-fetching (e.g., `InstitutionPageContainer`) and managing user permissions. The container passes data to presenter components (e.g., `InstitutionList` or `NotificationList`) for display.&lt;br /&gt;
   - Benefits: Enhances separation of concerns, making the components cleaner, modular, and easier to test.&lt;br /&gt;
&lt;br /&gt;
2. Observer Pattern:&lt;br /&gt;
   - Purpose: Manage and display real-time notification updates.&lt;br /&gt;
   - Application: A global `NotificationContext` tracks active notifications, notifying subscribed components like `NotificationList` of any updates.&lt;br /&gt;
   - Benefits: Ensures that notifications display real-time updates, increasing engagement and immediacy for users managing or viewing notifications.&lt;br /&gt;
&lt;br /&gt;
3. Role-Based Access Control (RBAC) with Context API:&lt;br /&gt;
   - Purpose: Enforce access restrictions based on user roles.&lt;br /&gt;
   - Application: `AuthContext` centralizes user role and permission management, enabling components to query permissions and conditionally render based on the role.&lt;br /&gt;
   - Benefits: Centralizes access control, making it easy to audit and adjust permissions if needed.&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>Hzhou33</name></author>
	</entry>
</feed>