<?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=Jkersey</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=Jkersey"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Jkersey"/>
	<updated>2026-08-25T15:41:40Z</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_-_E2490.1_Improving_Assignment_Participants_Management_UI_in_Expertiza&amp;diff=160477</id>
		<title>CSC/ECE 517 Fall 2024 - E2490.1 Improving Assignment Participants Management UI in Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2490.1_Improving_Assignment_Participants_Management_UI_in_Expertiza&amp;diff=160477"/>
		<updated>2024-12-04T02:29:32Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The Assignment Participants Management UI in Expertiza is a tool for instructors and administrators to manage assignment participants. However, the current interface is cluttered with dense information, limited filtering options, and ambiguous/unnecessary labels, making it challenging to locate, filter, or modify participant data effectively. This redesign focuses on improving usability, clarity, and responsiveness.&lt;br /&gt;
&lt;br /&gt;
===Project Goals===&lt;br /&gt;
This project aims to redesign and improve the Assignment Participants Management UI by creating a cleaner, more streamlined, and user-friendly interface. The key objectives include:&lt;br /&gt;
*Enhancing readability and usability by restructuring the layout and adding more intuitive spacing.&lt;br /&gt;
*Improving visual hierarchy with icons, badges, and role-based indicators to make information more accessible at a glance.&lt;br /&gt;
*Ensuring responsiveness so that the interface adapts well across different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Issues with Current UI===&lt;br /&gt;
*Cluttered Layout: The current UI is dense, with little spacing between elements, making it hard to read and locate information.&lt;br /&gt;
*Limited Filtering Options: Filtering capabilities are minimal, making it challenging to find participants based on specific criteria.&lt;br /&gt;
*Inefficient User Actions: Actions like removing or updating participants must be done individually, resulting in repetitive tasks for instructors.&lt;br /&gt;
*Confusing Labels: Certain labels (like &amp;quot;Handle&amp;quot;) are unclear, leading to usability issues, creating confusion around functionality.&lt;br /&gt;
*Lack of Responsive Design: The current design does not adapt well to different screen sizes, reducing usability on smaller devices.&lt;br /&gt;
&lt;br /&gt;
This project will address these issues with a comprehensive redesign focused on improving the user experience for instructors and administrators managing assignments in Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution==&lt;br /&gt;
===Streamlined Layout and Spacing===&lt;br /&gt;
&lt;br /&gt;
*Column Organization: Consolidate redundant columns (e.g., &amp;quot;Submit&amp;quot; and &amp;quot;Submission&amp;quot;) and remove unnecessary ones (e.g., &amp;quot;Handle&amp;quot; and &amp;quot;Metareview&amp;quot;).&lt;br /&gt;
*Improved Spacing: Add padding and spacing between rows and columns to improve readability.&lt;br /&gt;
*Properly handling edge cases: Error states are now properly displayed to the user under the conditions when they attempt to add a participant to the assignment with the same name as a pre-existing participant, or attempt to add a participant without a name.&lt;br /&gt;
*Addition of Visual Cues: Add visual cues throughout the implementation such as various icons (for distinguishing between participants' roles, as well as performing actions), allowing users to focus on essential information and streamline overall look and feel.&lt;br /&gt;
&lt;br /&gt;
====Sequence Diagram for Layout Change====&lt;br /&gt;
&lt;br /&gt;
In the current implementation we use dummy data, but the frontend would eventually be wired up to a backend for real-world usage.&lt;br /&gt;
&lt;br /&gt;
[[File: 3_1_1.png| 500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The current implementation has all changes made to the participants list implemented via client side state. This means that after performing various additions of new participants as well as edits and deletions of participants, whenever the browser is refreshed, this state is wiped out, and we are back at the initial load of our dummy data.&lt;br /&gt;
&lt;br /&gt;
====UI Enhancements====&lt;br /&gt;
&lt;br /&gt;
UI with improvements to visual clarity, layout, and responsiveness&lt;br /&gt;
&lt;br /&gt;
===Visual Hierarchy and Icons===&lt;br /&gt;
*Icons for Actions: Standard icons for tasks like edit, delete, and add, using those from the previous implementation to maintain consistency.&lt;br /&gt;
*Role-Based Badges: Color-coded badges (e.g., blue for &amp;quot;Student,&amp;quot; green for &amp;quot;Instructor&amp;quot;) with associated icons.&lt;br /&gt;
*Status Indicators: Display indicators for participants properties, like a checkmark for &amp;quot;Review&amp;quot; or &amp;quot;Submit&amp;quot; or a cross instead.&lt;br /&gt;
===Responsive Design===&lt;br /&gt;
Adaptive Column Visibility: Implement a responsive design where columns adapt to screen size, incorporating side-scroll functionality, condensing the columns, and reducing the text size for smaller screens.&lt;br /&gt;
===Tooltips and Help Icons===&lt;br /&gt;
*Tooltips: Add tooltips and icons for different kinds of participants when adding a new one (e.g., hovering over &amp;quot;reader&amp;quot;) to provide brief explanations.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Prior Implementation===&lt;br /&gt;
&lt;br /&gt;
The UI for participant management before the redesign is shown below for reference.&lt;br /&gt;
&lt;br /&gt;
[[File: Current Implementation.jpg | 800px ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Participants List Component===&lt;br /&gt;
&lt;br /&gt;
====Usage at the Call Site====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AssignmentParticipants assignmentProps={{ hasQuiz: false, hasMentor: false }} /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The main AssignmentParticipants component displays the page overall as well as contains props for the various properties an assignment might have which would affect the participants table, namely, having an associated quiz or a mentor. In the current implementation, this is done via the use of props, however future versions should have this properly linked to the implementation for the Assignment itself and passed through.&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div className=&amp;quot;assignment-participants-container&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h1 className=&amp;quot;assignment-participants-header&amp;quot;&amp;gt;Assignment Participants: Program 1&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Add User Section */}&lt;br /&gt;
      &amp;lt;label className=&amp;quot;section-label&amp;quot;&amp;gt;Add New Participant&amp;lt;/label&amp;gt;&lt;br /&gt;
      {error &amp;amp;&amp;amp; &amp;lt;div className=&amp;quot;error-message&amp;quot;&amp;gt;{error}&amp;lt;/div&amp;gt;}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;add-user-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;add-user-input&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;input&lt;br /&gt;
            type=&amp;quot;text&amp;quot;&lt;br /&gt;
            placeholder=&amp;quot;Enter a new username&amp;quot;&lt;br /&gt;
            className=&amp;quot;username-input&amp;quot;&lt;br /&gt;
            value={newUserName}&lt;br /&gt;
            onChange={(e) =&amp;gt; setNewUserName(e.target.value)}&lt;br /&gt;
          /&amp;gt;&lt;br /&gt;
          &amp;lt;button className=&amp;quot;add-user-button&amp;quot; onClick={handleAddUser}&amp;gt;Add User&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* Radio Group for Role Selection */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;role-radio-group&amp;quot;&amp;gt;&lt;br /&gt;
          {Object.values(ParticipantRole).map((role) =&amp;gt; (&lt;br /&gt;
            &amp;lt;label key={role} className=&amp;quot;role-radio-option&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;input&lt;br /&gt;
                type=&amp;quot;radio&amp;quot;&lt;br /&gt;
                value={role}&lt;br /&gt;
                checked={selectedRole === role}&lt;br /&gt;
                onChange={() =&amp;gt; setSelectedRole(role as ParticipantRole)}&lt;br /&gt;
              /&amp;gt;&lt;br /&gt;
              {role}&lt;br /&gt;
              &amp;lt;span className=&amp;quot;info-icon&amp;quot; title={participantRoleInfo(role)}&amp;gt;i&amp;lt;/span&amp;gt;&lt;br /&gt;
            &amp;lt;/label&amp;gt;&lt;br /&gt;
          ))}&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Participant Table */}&lt;br /&gt;
      &amp;lt;ParticipantTable&lt;br /&gt;
        participants={filteredParticipants}&lt;br /&gt;
        onSort={handleSort}&lt;br /&gt;
        assignmentProps={assignmentProps}&lt;br /&gt;
        openEditModal={openEditModal}&lt;br /&gt;
        openRemoveModal={openRemoveModal}&lt;br /&gt;
        numColumns={numColumns(assignmentProps)}&lt;br /&gt;
        sortConfig={sortConfig}&lt;br /&gt;
      /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Modals */}&lt;br /&gt;
      {selectedParticipant &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;EditParticipantModal&lt;br /&gt;
          show={modalShow.edit}&lt;br /&gt;
          participant={selectedParticipant}&lt;br /&gt;
          onHide={() =&amp;gt; setModalShow({ ...modalShow, edit: false })}&lt;br /&gt;
          onSave={handleSave}&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;ConfirmRemoveModal&lt;br /&gt;
        show={modalShow.remove}&lt;br /&gt;
        onHide={() =&amp;gt; setModalShow({ ...modalShow, remove: false })}&lt;br /&gt;
        onConfirm={handleRemove}&lt;br /&gt;
      /&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Redesigned UI====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the component above which is the crux of the redesigned page for managing the participants associated with an assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:AssignmentParticipantsTable.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===EditParticipantModal Component===&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function EditParticipantModal({ participant, show, onHide, onSave }: EditParticipantModalProps) {&lt;br /&gt;
  const [updatedParticipant, setUpdatedParticipant] = useState&amp;lt;Participant&amp;gt;(participant);&lt;br /&gt;
&lt;br /&gt;
  const handleChange = (field: keyof Participant, value: any) =&amp;gt; {&lt;br /&gt;
    setUpdatedParticipant({ ...updatedParticipant, [field]: value });&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  const handlePermissionsToggle = (field: keyof ParticipantPermissions) =&amp;gt; {&lt;br /&gt;
    setUpdatedParticipant({&lt;br /&gt;
      ...updatedParticipant,&lt;br /&gt;
      permissions: {&lt;br /&gt;
        ...updatedParticipant.permissions,&lt;br /&gt;
        [field]: updatedParticipant.permissions[field] === 'yes' ? 'no' : 'yes',&lt;br /&gt;
      },&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;Modal show={show} onHide={onHide} centered&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Header closeButton&amp;gt;&lt;br /&gt;
        &amp;lt;Modal.Title&amp;gt;Edit Participant&amp;lt;/Modal.Title&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Header&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Body&amp;gt;&lt;br /&gt;
        &amp;lt;Form&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formName&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Name&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              type=&amp;quot;text&amp;quot;&lt;br /&gt;
              value={updatedParticipant.name}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('name', e.target.value)}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formEmail&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Email&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              type=&amp;quot;email&amp;quot;&lt;br /&gt;
              value={updatedParticipant.email}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('email', e.target.value)}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formRole&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Role&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              as=&amp;quot;select&amp;quot;&lt;br /&gt;
              value={updatedParticipant.role}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('role', e.target.value)}&lt;br /&gt;
            &amp;gt;&lt;br /&gt;
              {Object.values(Role).map((role) =&amp;gt; (&lt;br /&gt;
                &amp;lt;option key={role} value={role}&amp;gt;&lt;br /&gt;
                  {role}&lt;br /&gt;
                &amp;lt;/option&amp;gt;&lt;br /&gt;
              ))}&lt;br /&gt;
            &amp;lt;/Form.Control&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formParticipantRole&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Participant Role&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              as=&amp;quot;select&amp;quot;&lt;br /&gt;
              value={updatedParticipant.participantRole}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('participantRole', e.target.value)}&lt;br /&gt;
            &amp;gt;&lt;br /&gt;
              {Object.values(ParticipantRole).map((role) =&amp;gt; (&lt;br /&gt;
                &amp;lt;option key={role} value={role}&amp;gt;&lt;br /&gt;
                  {role}&lt;br /&gt;
                &amp;lt;/option&amp;gt;&lt;br /&gt;
              ))}&lt;br /&gt;
            &amp;lt;/Form.Control&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;div className=&amp;quot;permissions-container&amp;quot;&amp;gt;&lt;br /&gt;
            {Object.keys(permissionLabels).map((key) =&amp;gt; (&lt;br /&gt;
              &amp;lt;Form.Check&lt;br /&gt;
                key={key}&lt;br /&gt;
                type=&amp;quot;switch&amp;quot;&lt;br /&gt;
                id={`${key}-switch`}&lt;br /&gt;
                label={permissionLabels[key as keyof ParticipantPermissions]}&lt;br /&gt;
                checked={updatedParticipant.permissions[key as keyof ParticipantPermissions] === 'yes'}&lt;br /&gt;
                onChange={() =&amp;gt; handlePermissionsToggle(key as keyof ParticipantPermissions)}&lt;br /&gt;
                className=&amp;quot;permission-switch&amp;quot;&lt;br /&gt;
              /&amp;gt;&lt;br /&gt;
            ))}&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/Form&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Body&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Footer&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;secondary&amp;quot; onClick={onHide}&amp;gt;&lt;br /&gt;
          Cancel&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;primary&amp;quot; onClick={() =&amp;gt; onSave(updatedParticipant)}&amp;gt;&lt;br /&gt;
          Save Changes&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Footer&amp;gt;&lt;br /&gt;
    &amp;lt;/Modal&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Redesigned UI====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the EditParticipantModal component above which is used for managing the properties of a user in the assignment's participants list.&lt;br /&gt;
&lt;br /&gt;
[[File:EditParticipantModal.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ConfirmRemoveModal Component===&lt;br /&gt;
&lt;br /&gt;
In a similar fashion to the modal for editing a participant, the UI also contains a modal associated with a confirmation for removing a participant from the assignment. This confirmation modal is presented to the user to prevent them from making an accidental deletion in the case when they didn't mean to press the removal button, and confirms they want to indeed perform the removal of the participant.&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function ConfirmRemoveModal({ show, onHide, onConfirm }: ConfirmRemoveModalProps) {&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;Modal show={show} onHide={onHide} centered&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Header closeButton&amp;gt;&lt;br /&gt;
        &amp;lt;Modal.Title&amp;gt;Confirm Removal&amp;lt;/Modal.Title&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Header&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Body&amp;gt;&lt;br /&gt;
        Are you sure you want to remove this participant?&lt;br /&gt;
      &amp;lt;/Modal.Body&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Footer&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;secondary&amp;quot; onClick={onHide}&amp;gt;&lt;br /&gt;
          Cancel&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;danger&amp;quot; onClick={onConfirm}&amp;gt;&lt;br /&gt;
          Confirm&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Footer&amp;gt;&lt;br /&gt;
    &amp;lt;/Modal&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Redesigned UI====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the ConfirmRemoveModal component above which is used for ensuring deletion of participants only occurs when the operation is intended.&lt;br /&gt;
&lt;br /&gt;
[[File:ConfirmRemoveModal.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Responsive design===&lt;br /&gt;
&lt;br /&gt;
Finally, the overall UI was designed to be responsive for various screen sizes (i.e. maintains quality and visual consistency across mobile, tablet, and desktop screen sizes). This was done primarily through the usage of media queries as well as various modern CSS features.&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
&lt;br /&gt;
    .add-user-section,&lt;br /&gt;
    .user-permissions {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .role-radio-group {&lt;br /&gt;
        margin-top: 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .user-input {&lt;br /&gt;
        margin-bottom: 0;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .assignment-participants-header {&lt;br /&gt;
        font-size: 1.25rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .add-user-button {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .assignment-participants-table th::before {&lt;br /&gt;
        content: attr(data-label);&lt;br /&gt;
        float: left;&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mobile Layout====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the UI when viewed from a mobile screen size. The use of side-scrolling functionality is used to make the table functional while still taking up the majority of the screen real estate available for mobile screens.&lt;br /&gt;
&lt;br /&gt;
[[File:MobileUI.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Design Patterns===&lt;br /&gt;
The following design patterns we're used throughout the process of the UI redesign:&lt;br /&gt;
&lt;br /&gt;
* Single Responsibility Principle (SRP): Each UI component will be designed to handle a specific function, like adding a user, or editing their properties, to keep the interface modular.&lt;br /&gt;
* Interface Segregation Principle (ISP): Each feature (e.g., modals for user actions, participants table) will be separated into separate, focused components, ensuring organized functionality and clear dependencies.&lt;br /&gt;
* DRY Principle: Common features like icons, and styling will be centralized in reusable components to avoid redundancy in the UI code.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
===Manual UI Testing===&lt;br /&gt;
The following step-by-step test cases were performed for manually verifying each UI component:&lt;br /&gt;
*Adding a User: Enter username and click add user, showing the new user in the updated participants list.&lt;br /&gt;
*Editing a User: Click the edit icon for the user in the participant list and edit the various properties associated with the user, then click confirm to save the changes and see them reflected in the participants list.&lt;br /&gt;
*Deleting a User: Click the delete icon for the user in the participant list, then click confirm to delete the user and see them no longer in the participants list.&lt;br /&gt;
* Responsiveness: Verify UI properly adapts across desktop, tablet, and mobile devices.&lt;br /&gt;
&lt;br /&gt;
==Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
*Detailed Statistics: Provide analytics on participation, submission rates, etc., to give instructors a quick overview of assignment engagement.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The redesign of the Assignment Participants Management UI significantly improves the usability, accessibility, and adaptability of the tool for instructors and administrators. Key improvements include a cleaner and more structured layout, enhanced filtering capabilities, and a responsive design that ensures seamless use across various devices. By introducing intuitive features like role-based badges, actionable icons, and tooltips, the interface provides a modern and user-friendly experience. These changes streamline participant management tasks, reducing repetitive work and improving overall efficiency for managing large classes. This redesign lays a solid foundation for future enhancements, such as detailed analytics and advanced filtering capabilities.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
&lt;br /&gt;
* Chaitanya Srusti &amp;lt;crsrusti@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Josh Kersey &amp;lt;jkersey@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Video Demo ===&lt;br /&gt;
The video demo highlights the redesigned UI in action, showcasing key features such as adding, editing, and deleting participants, the enhanced responsiveness on mobile and desktop, and improved usability with tooltips and badges and more.&lt;br /&gt;
&lt;br /&gt;
Link to Demo: https://drive.google.com/file/d/1qiav8ZJoPRiT9r5b7sq-hF0glbLAYtHp/view?usp=sharing&lt;br /&gt;
&lt;br /&gt;
=== PR Link ===&lt;br /&gt;
&lt;br /&gt;
Link to PR: https://github.com/expertiza/reimplementation-front-end/pull/79&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2490.1_Improving_Assignment_Participants_Management_UI_in_Expertiza&amp;diff=160406</id>
		<title>CSC/ECE 517 Fall 2024 - E2490.1 Improving Assignment Participants Management UI in Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2490.1_Improving_Assignment_Participants_Management_UI_in_Expertiza&amp;diff=160406"/>
		<updated>2024-12-04T01:38:22Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The Assignment Participants Management UI in Expertiza is a tool for instructors and administrators to manage assignment participants. However, the current interface is cluttered with dense information, limited filtering options, and ambiguous/unnecessary labels, making it challenging to locate, filter, or modify participant data effectively. This redesign focuses on improving usability, clarity, and responsiveness.&lt;br /&gt;
&lt;br /&gt;
===Project Goals===&lt;br /&gt;
This project aims to redesign and improve the Assignment Participants Management UI by creating a cleaner, more streamlined, and user-friendly interface. The key objectives include:&lt;br /&gt;
*Enhancing readability and usability by restructuring the layout and adding more intuitive spacing.&lt;br /&gt;
*Improving visual hierarchy with icons, badges, and role-based indicators to make information more accessible at a glance.&lt;br /&gt;
*Ensuring responsiveness so that the interface adapts well across different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Issues with Current UI===&lt;br /&gt;
*Cluttered Layout: The current UI is dense, with little spacing between elements, making it hard to read and locate information.&lt;br /&gt;
*Limited Filtering Options: Filtering capabilities are minimal, making it challenging to find participants based on specific criteria.&lt;br /&gt;
*Inefficient User Actions: Actions like removing or updating participants must be done individually, resulting in repetitive tasks for instructors.&lt;br /&gt;
*Confusing Labels: Certain labels (like &amp;quot;Handle&amp;quot;) are unclear, leading to usability issues, creating confusion around functionality.&lt;br /&gt;
*Lack of Responsive Design: The current design does not adapt well to different screen sizes, reducing usability on smaller devices.&lt;br /&gt;
&lt;br /&gt;
This project will address these issues with a comprehensive redesign focused on improving the user experience for instructors and administrators managing assignments in Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution==&lt;br /&gt;
===Streamlined Layout and Spacing===&lt;br /&gt;
&lt;br /&gt;
*Column Organization: Consolidate redundant columns (e.g., &amp;quot;Submit&amp;quot; and &amp;quot;Submission&amp;quot;) and remove unnecessary ones (e.g., &amp;quot;Handle&amp;quot; and &amp;quot;Metareview&amp;quot;).&lt;br /&gt;
*Improved Spacing: Add padding and spacing between rows and columns to improve readability.&lt;br /&gt;
*Properly handling edge cases: Error states are now properly displayed to the user under the conditions when they attempt to add a participant to the assignment with the same name as a pre-existing participant, or attempt to add a participant without a name.&lt;br /&gt;
*Addition of Visual Cues: Add visual cues throughout the implementation such as various icons (for distinguishing between participants' roles, as well as performing actions), allowing users to focus on essential information and streamline overall look and feel.&lt;br /&gt;
&lt;br /&gt;
====Sequence Diagram for Layout Change====&lt;br /&gt;
&lt;br /&gt;
In the current implementation we use dummy data, but the frontend would eventually be wired up to a backend for real-world usage.&lt;br /&gt;
&lt;br /&gt;
[[File: 3_1_1.png| 500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The current implementation has all changes made to the participants list implemented via client side state. This means that after performing various additions of new participants as well as edits and deletions of participants, whenever the browser is refreshed, this state is wiped out, and we are back at the initial load of our dummy data.&lt;br /&gt;
&lt;br /&gt;
====UI Enhancements====&lt;br /&gt;
&lt;br /&gt;
UI with improvements to visual clarity, layout, and responsiveness&lt;br /&gt;
&lt;br /&gt;
===Visual Hierarchy and Icons===&lt;br /&gt;
*Icons for Actions: Standard icons for tasks like edit, delete, and add, using those from the previous implementation to maintain consistency.&lt;br /&gt;
*Role-Based Badges: Color-coded badges (e.g., blue for &amp;quot;Student,&amp;quot; green for &amp;quot;Instructor&amp;quot;) with associated icons.&lt;br /&gt;
*Status Indicators: Display indicators for participants properties, like a checkmark for &amp;quot;Review&amp;quot; or &amp;quot;Submit&amp;quot; or a cross instead.&lt;br /&gt;
===Responsive Design===&lt;br /&gt;
Adaptive Column Visibility: Implement a responsive design where columns adapt to screen size, incorporating side-scroll functionality, condensing the columns, and reducing the text size for smaller screens.&lt;br /&gt;
===Tooltips and Help Icons===&lt;br /&gt;
*Tooltips: Add tooltips and icons for different kinds of participants when adding a new one (e.g., hovering over &amp;quot;reader&amp;quot;) to provide brief explanations.&lt;br /&gt;
&lt;br /&gt;
==Implementation==&lt;br /&gt;
&lt;br /&gt;
===Prior Implementation===&lt;br /&gt;
&lt;br /&gt;
The UI for participant management before the redesign is shown below for reference.&lt;br /&gt;
&lt;br /&gt;
[[File: Current Implementation.jpg | 800px ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Participants List Component===&lt;br /&gt;
&lt;br /&gt;
====Usage at the Call Site====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;AssignmentParticipants assignmentProps={{ hasQuiz: false, hasMentor: false }} /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The main AssignmentParticipants component displays the page overall as well as contains props for the various properties an assignment might have which would affect the participants table, namely, having an associated quiz or a mentor. In the current implementation, this is done via the use of props, however future versions should have this properly linked to the implementation for the Assignment itself and passed through.&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div className=&amp;quot;assignment-participants-container&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h1 className=&amp;quot;assignment-participants-header&amp;quot;&amp;gt;Assignment Participants: Program 1&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Add User Section */}&lt;br /&gt;
      &amp;lt;label className=&amp;quot;section-label&amp;quot;&amp;gt;Add New Participant&amp;lt;/label&amp;gt;&lt;br /&gt;
      {error &amp;amp;&amp;amp; &amp;lt;div className=&amp;quot;error-message&amp;quot;&amp;gt;{error}&amp;lt;/div&amp;gt;}&lt;br /&gt;
      &amp;lt;div className=&amp;quot;add-user-section&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div className=&amp;quot;add-user-input&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;input&lt;br /&gt;
            type=&amp;quot;text&amp;quot;&lt;br /&gt;
            placeholder=&amp;quot;Enter a new username&amp;quot;&lt;br /&gt;
            className=&amp;quot;username-input&amp;quot;&lt;br /&gt;
            value={newUserName}&lt;br /&gt;
            onChange={(e) =&amp;gt; setNewUserName(e.target.value)}&lt;br /&gt;
          /&amp;gt;&lt;br /&gt;
          &amp;lt;button className=&amp;quot;add-user-button&amp;quot; onClick={handleAddUser}&amp;gt;Add User&amp;lt;/button&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* Radio Group for Role Selection */}&lt;br /&gt;
        &amp;lt;div className=&amp;quot;role-radio-group&amp;quot;&amp;gt;&lt;br /&gt;
          {Object.values(ParticipantRole).map((role) =&amp;gt; (&lt;br /&gt;
            &amp;lt;label key={role} className=&amp;quot;role-radio-option&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;input&lt;br /&gt;
                type=&amp;quot;radio&amp;quot;&lt;br /&gt;
                value={role}&lt;br /&gt;
                checked={selectedRole === role}&lt;br /&gt;
                onChange={() =&amp;gt; setSelectedRole(role as ParticipantRole)}&lt;br /&gt;
              /&amp;gt;&lt;br /&gt;
              {role}&lt;br /&gt;
              &amp;lt;span className=&amp;quot;info-icon&amp;quot; title={participantRoleInfo(role)}&amp;gt;i&amp;lt;/span&amp;gt;&lt;br /&gt;
            &amp;lt;/label&amp;gt;&lt;br /&gt;
          ))}&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Participant Table */}&lt;br /&gt;
      &amp;lt;ParticipantTable&lt;br /&gt;
        participants={filteredParticipants}&lt;br /&gt;
        onSort={handleSort}&lt;br /&gt;
        assignmentProps={assignmentProps}&lt;br /&gt;
        openEditModal={openEditModal}&lt;br /&gt;
        openRemoveModal={openRemoveModal}&lt;br /&gt;
        numColumns={numColumns(assignmentProps)}&lt;br /&gt;
        sortConfig={sortConfig}&lt;br /&gt;
      /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Modals */}&lt;br /&gt;
      {selectedParticipant &amp;amp;&amp;amp; (&lt;br /&gt;
        &amp;lt;EditParticipantModal&lt;br /&gt;
          show={modalShow.edit}&lt;br /&gt;
          participant={selectedParticipant}&lt;br /&gt;
          onHide={() =&amp;gt; setModalShow({ ...modalShow, edit: false })}&lt;br /&gt;
          onSave={handleSave}&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
      )}&lt;br /&gt;
      &amp;lt;ConfirmRemoveModal&lt;br /&gt;
        show={modalShow.remove}&lt;br /&gt;
        onHide={() =&amp;gt; setModalShow({ ...modalShow, remove: false })}&lt;br /&gt;
        onConfirm={handleRemove}&lt;br /&gt;
      /&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Redesigned UI====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the component above which is the crux of the redesigned page for managing the participants associated with an assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:AssignmentParticipantsTable.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===EditParticipantModal Component===&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function EditParticipantModal({ participant, show, onHide, onSave }: EditParticipantModalProps) {&lt;br /&gt;
  const [updatedParticipant, setUpdatedParticipant] = useState&amp;lt;Participant&amp;gt;(participant);&lt;br /&gt;
&lt;br /&gt;
  const handleChange = (field: keyof Participant, value: any) =&amp;gt; {&lt;br /&gt;
    setUpdatedParticipant({ ...updatedParticipant, [field]: value });&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  const handlePermissionsToggle = (field: keyof ParticipantPermissions) =&amp;gt; {&lt;br /&gt;
    setUpdatedParticipant({&lt;br /&gt;
      ...updatedParticipant,&lt;br /&gt;
      permissions: {&lt;br /&gt;
        ...updatedParticipant.permissions,&lt;br /&gt;
        [field]: updatedParticipant.permissions[field] === 'yes' ? 'no' : 'yes',&lt;br /&gt;
      },&lt;br /&gt;
    });&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;Modal show={show} onHide={onHide} centered&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Header closeButton&amp;gt;&lt;br /&gt;
        &amp;lt;Modal.Title&amp;gt;Edit Participant&amp;lt;/Modal.Title&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Header&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Body&amp;gt;&lt;br /&gt;
        &amp;lt;Form&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formName&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Name&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              type=&amp;quot;text&amp;quot;&lt;br /&gt;
              value={updatedParticipant.name}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('name', e.target.value)}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formEmail&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Email&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              type=&amp;quot;email&amp;quot;&lt;br /&gt;
              value={updatedParticipant.email}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('email', e.target.value)}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formRole&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Role&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              as=&amp;quot;select&amp;quot;&lt;br /&gt;
              value={updatedParticipant.role}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('role', e.target.value)}&lt;br /&gt;
            &amp;gt;&lt;br /&gt;
              {Object.values(Role).map((role) =&amp;gt; (&lt;br /&gt;
                &amp;lt;option key={role} value={role}&amp;gt;&lt;br /&gt;
                  {role}&lt;br /&gt;
                &amp;lt;/option&amp;gt;&lt;br /&gt;
              ))}&lt;br /&gt;
            &amp;lt;/Form.Control&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
          &amp;lt;Form.Group controlId=&amp;quot;formParticipantRole&amp;quot; className=&amp;quot;mb-3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Label&amp;gt;Participant Role&amp;lt;/Form.Label&amp;gt;&lt;br /&gt;
            &amp;lt;Form.Control&lt;br /&gt;
              as=&amp;quot;select&amp;quot;&lt;br /&gt;
              value={updatedParticipant.participantRole}&lt;br /&gt;
              onChange={(e) =&amp;gt; handleChange('participantRole', e.target.value)}&lt;br /&gt;
            &amp;gt;&lt;br /&gt;
              {Object.values(ParticipantRole).map((role) =&amp;gt; (&lt;br /&gt;
                &amp;lt;option key={role} value={role}&amp;gt;&lt;br /&gt;
                  {role}&lt;br /&gt;
                &amp;lt;/option&amp;gt;&lt;br /&gt;
              ))}&lt;br /&gt;
            &amp;lt;/Form.Control&amp;gt;&lt;br /&gt;
          &amp;lt;/Form.Group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;div className=&amp;quot;permissions-container&amp;quot;&amp;gt;&lt;br /&gt;
            {Object.keys(permissionLabels).map((key) =&amp;gt; (&lt;br /&gt;
              &amp;lt;Form.Check&lt;br /&gt;
                key={key}&lt;br /&gt;
                type=&amp;quot;switch&amp;quot;&lt;br /&gt;
                id={`${key}-switch`}&lt;br /&gt;
                label={permissionLabels[key as keyof ParticipantPermissions]}&lt;br /&gt;
                checked={updatedParticipant.permissions[key as keyof ParticipantPermissions] === 'yes'}&lt;br /&gt;
                onChange={() =&amp;gt; handlePermissionsToggle(key as keyof ParticipantPermissions)}&lt;br /&gt;
                className=&amp;quot;permission-switch&amp;quot;&lt;br /&gt;
              /&amp;gt;&lt;br /&gt;
            ))}&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/Form&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Body&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Footer&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;secondary&amp;quot; onClick={onHide}&amp;gt;&lt;br /&gt;
          Cancel&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;primary&amp;quot; onClick={() =&amp;gt; onSave(updatedParticipant)}&amp;gt;&lt;br /&gt;
          Save Changes&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Footer&amp;gt;&lt;br /&gt;
    &amp;lt;/Modal&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Redesigned UI====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the EditParticipantModal component above which is used for managing the properties of a user in the assignment's participants list.&lt;br /&gt;
&lt;br /&gt;
[[File:EditParticipantModal.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ConfirmRemoveModal Component===&lt;br /&gt;
&lt;br /&gt;
In a similar fashion to the modal for editing a participant, the UI also contains a modal associated with a confirmation for removing a participant from the assignment. This confirmation modal is presented to the user to prevent them from making an accidental deletion in the case when they didn't mean to press the removal button, and confirms they want to indeed perform the removal of the participant.&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function ConfirmRemoveModal({ show, onHide, onConfirm }: ConfirmRemoveModalProps) {&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;Modal show={show} onHide={onHide} centered&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Header closeButton&amp;gt;&lt;br /&gt;
        &amp;lt;Modal.Title&amp;gt;Confirm Removal&amp;lt;/Modal.Title&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Header&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Body&amp;gt;&lt;br /&gt;
        Are you sure you want to remove this participant?&lt;br /&gt;
      &amp;lt;/Modal.Body&amp;gt;&lt;br /&gt;
      &amp;lt;Modal.Footer&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;secondary&amp;quot; onClick={onHide}&amp;gt;&lt;br /&gt;
          Cancel&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
        &amp;lt;Button variant=&amp;quot;danger&amp;quot; onClick={onConfirm}&amp;gt;&lt;br /&gt;
          Confirm&lt;br /&gt;
        &amp;lt;/Button&amp;gt;&lt;br /&gt;
      &amp;lt;/Modal.Footer&amp;gt;&lt;br /&gt;
    &amp;lt;/Modal&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Redesigned UI====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the ConfirmRemoveModal component above which is used for ensuring deletion of participants only occurs when the operation is intended.&lt;br /&gt;
&lt;br /&gt;
[[File:ConfirmRemoveModal.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Responsive design===&lt;br /&gt;
&lt;br /&gt;
Finally, the overall UI was designed to be responsive for various screen sizes (i.e. maintains quality and visual consistency across mobile, tablet, and desktop screen sizes). This was done primarily through the usage of media queries as well as various modern CSS features.&lt;br /&gt;
&lt;br /&gt;
====Snippet of the Implementation====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;css&amp;quot;&amp;gt;&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
&lt;br /&gt;
    .add-user-section,&lt;br /&gt;
    .user-permissions {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .role-radio-group {&lt;br /&gt;
        margin-top: 1rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .user-input {&lt;br /&gt;
        margin-bottom: 0;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .assignment-participants-header {&lt;br /&gt;
        font-size: 1.25rem;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .add-user-button {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    .assignment-participants-table th::before {&lt;br /&gt;
        content: attr(data-label);&lt;br /&gt;
        float: left;&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mobile Layout====&lt;br /&gt;
&lt;br /&gt;
Below is a screenshot displaying the UI when viewed from a mobile screen size. The use of side-scrolling functionality is used to make the table functional while still taking up the majority of the screen real estate available for mobile screens.&lt;br /&gt;
&lt;br /&gt;
[[File:MobileUI.png| 800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Design Patterns===&lt;br /&gt;
The following design patterns we're used throughout the process of the UI redesign:&lt;br /&gt;
&lt;br /&gt;
* Single Responsibility Principle (SRP): Each UI component will be designed to handle a specific function, like adding a user, or editing their properties, to keep the interface modular.&lt;br /&gt;
* Interface Segregation Principle (ISP): Each feature (e.g., modals for user actions, participants table) will be separated into separate, focused components, ensuring organized functionality and clear dependencies.&lt;br /&gt;
* DRY Principle: Common features like icons, and styling will be centralized in reusable components to avoid redundancy in the UI code.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
===Manual UI Testing===&lt;br /&gt;
The following step-by-step test cases were performed for manually verifying each UI component:&lt;br /&gt;
*Adding a User: Enter username and click add user, showing the new user in the updated participants list.&lt;br /&gt;
*Editing a User: Click the edit icon for the user in the participant list and edit the various properties associated with the user, then click confirm to save the changes and see them reflected in the participants list.&lt;br /&gt;
*Deleting a User: Click the delete icon for the user in the participant list, then click confirm to delete the user and see them no longer in the participants list.&lt;br /&gt;
* Responsiveness: Verify UI properly adapts across desktop, tablet, and mobile devices.&lt;br /&gt;
&lt;br /&gt;
==Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
*Detailed Statistics: Provide analytics on participation, submission rates, etc., to give instructors a quick overview of assignment engagement.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The redesign of the Assignment Participants Management UI significantly improves the usability, accessibility, and adaptability of the tool for instructors and administrators. Key improvements include a cleaner and more structured layout, enhanced filtering capabilities, and a responsive design that ensures seamless use across various devices. By introducing intuitive features like role-based badges, actionable icons, and tooltips, the interface provides a modern and user-friendly experience. These changes streamline participant management tasks, reducing repetitive work and improving overall efficiency for managing large classes. This redesign lays a solid foundation for future enhancements, such as detailed analytics and advanced filtering capabilities.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
&lt;br /&gt;
* Chaitanya Srusti &amp;lt;crsrusti@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Josh Kersey &amp;lt;jkersey@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video Demo ==&lt;br /&gt;
The video demo highlights the redesigned UI in action, showcasing key features such as adding, editing, and deleting participants, the enhanced responsiveness on mobile and desktop, and improved usability with tooltips and badges and more.&lt;br /&gt;
&lt;br /&gt;
Link to Demo: &amp;lt;demo_link_here&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:MobileUI.png&amp;diff=160401</id>
		<title>File:MobileUI.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:MobileUI.png&amp;diff=160401"/>
		<updated>2024-12-04T01:34:02Z</updated>

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

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

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

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2490.1_Improving_Assignment_Participants_Management_UI_in_Expertiza&amp;diff=160378</id>
		<title>CSC/ECE 517 Fall 2024 - E2490.1 Improving Assignment Participants Management UI in Expertiza</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2490.1_Improving_Assignment_Participants_Management_UI_in_Expertiza&amp;diff=160378"/>
		<updated>2024-12-04T00:45:47Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: Created page with &amp;quot;== Introduction == The Assignment Participants Management UI in Expertiza is a tool used by instructors and administrators to manage participants in assignments. Currently, this interface is cluttered, with dense information and limited filtering options, making it challenging to quickly locate, filter, or modify participant data. The current UI has issues with readability, and ambiguous/confusing labels.  ===Project Goals=== This project aims to redesign and improve the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The Assignment Participants Management UI in Expertiza is a tool used by instructors and administrators to manage participants in assignments. Currently, this interface is cluttered, with dense information and limited filtering options, making it challenging to quickly locate, filter, or modify participant data. The current UI has issues with readability, and ambiguous/confusing labels.&lt;br /&gt;
&lt;br /&gt;
===Project Goals===&lt;br /&gt;
This project aims to redesign and improve the Assignment Participants Management UI by creating a cleaner, more streamlined, and user-friendly interface. The key objectives include:&lt;br /&gt;
*Enhancing readability and usability by restructuring the layout and adding more intuitive spacing.&lt;br /&gt;
*Improving visual hierarchy with icons, badges, and role-based indicators to make information more accessible at a glance.&lt;br /&gt;
*Ensuring responsiveness so that the interface adapts well across different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement==&lt;br /&gt;
&lt;br /&gt;
===Issues with Current UI===&lt;br /&gt;
*Cluttered Layout: The current UI is dense, with little spacing between elements, making it hard to read and locate information.&lt;br /&gt;
*Limited Filtering Options: Filtering capabilities are minimal, making it challenging to find participants based on specific criteria.&lt;br /&gt;
*Inefficient User Actions: Actions like removing or updating participants must be done individually, resulting in repetitive tasks for instructors.&lt;br /&gt;
*Confusing Labels: Certain labels (like &amp;quot;Handle&amp;quot;) are unclear, leading to usability issues, creating confusion around functionality.&lt;br /&gt;
*Lack of Responsive Design: The current design does not adapt well to different screen sizes, reducing usability on smaller devices.&lt;br /&gt;
&lt;br /&gt;
This project will address these issues with a comprehensive redesign focused on improving the user experience for instructors and administrators managing assignments in Expertiza.&lt;br /&gt;
&lt;br /&gt;
== Proposed Solution==&lt;br /&gt;
===Streamlined Layout and Spacing===&lt;br /&gt;
&lt;br /&gt;
*Column Organization: Remove redundant columns (e.g., &amp;quot;Submit,&amp;quot; &amp;quot;Submission&amp;quot;) should be changed to just &amp;quot;Submit&amp;quot;. Additionally, remove unnecessary columns such as &amp;quot;Handle,&amp;quot; and &amp;quot;Metareview&amp;quot;.&lt;br /&gt;
*Improved Spacing: Add padding and spacing between rows and columns to improve readability.&lt;br /&gt;
*Addition of Visual Cues: Add visual cues throughout the implementation such as various icons (for distinguishing between participants' roles, as well as performing actions), allowing users to focus on essential information and streamline overall look and feel.&lt;br /&gt;
&lt;br /&gt;
====Sequence Diagram for Layout Change====&lt;br /&gt;
&lt;br /&gt;
In the current implementation we use dummy data, but the frontend would eventually be wired up to a backend for real-world usage.&lt;br /&gt;
&lt;br /&gt;
[[File: 3_1_1.png| 500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The current implementation has all changes made to the participants list implemented via client side state. This means that after performing various additions of new participants as well as edits and deletions of participants, whenever the browser is refreshed, this state is wiped out, and we are back at the initial load of our dummy data.&lt;br /&gt;
&lt;br /&gt;
====UI Enhancements====&lt;br /&gt;
&lt;br /&gt;
UI with improvements to visual clarity, layout, and responsiveness&lt;br /&gt;
&lt;br /&gt;
===Visual Hierarchy and Icons===&lt;br /&gt;
*Icons for Actions: Use icons for common actions, such as a delete icon for &amp;quot;Remove.&amp;quot;&lt;br /&gt;
*Role-Based Badges: Show roles with color-coded badges (e.g., &amp;quot;Student&amp;quot; in blue, &amp;quot;Instructor&amp;quot; in green) as well as accompanying icons.&lt;br /&gt;
*Status Indicators: Display indicators for participants properties, like a checkmark for &amp;quot;Review&amp;quot; or &amp;quot;Submit&amp;quot; or a cross instead.&lt;br /&gt;
===Responsive Design===&lt;br /&gt;
Adaptive Column Visibility: Implement a responsive design where columns adapt based on screen size, i.e. text becomes smaller and columns become more condensed as well as have a side-scroll functionality on smaller screens.&lt;br /&gt;
===Tooltips and Help Icons===&lt;br /&gt;
*Tooltips: Add tooltips and icons for different kinds of participants when adding a new one (e.g., hovering over &amp;quot;reader&amp;quot;) to provide brief explanations.&lt;br /&gt;
&lt;br /&gt;
==Implementation Plan==&lt;br /&gt;
===Frontend Modifications===&lt;br /&gt;
*List specific files to modify (e.g., ParticipantsTable.tsx, AssignmentParticipants.tsx) with high-level explanations of changes in each.&lt;br /&gt;
*Detail CSS changes for improved spacing and responsiveness, including media queries for adaptive design.&lt;br /&gt;
===Design Patterns===&lt;br /&gt;
* Single Responsibility Principle (SRP): Each UI component will be designed to handle a specific function, like adding a user, or editing their properties, to keep the interface modular.&lt;br /&gt;
* Interface Segregation Principle (ISP): Each feature (e.g., modals for user actions, participants table) will be separated into separate, focused components, ensuring organized functionality and clear dependencies.&lt;br /&gt;
* DRY Principle: Common features like icons, and styling will be centralized in reusable components to avoid redundancy in the UI code.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
===Manual UI Testing===&lt;br /&gt;
The following step-by-step test cases were performed for manually verifying each UI component:&lt;br /&gt;
*Adding a User: Enter username and click add user, showing the new user in the updated participants list.&lt;br /&gt;
*Editing a User: Click the edit icon for the user in the participant list and edit the various properties associated with the user, then click confirm to save the changes and see them reflected in the participants list.&lt;br /&gt;
*Deleting a User: Click the delete icon for the user in the participant list, then click confirm to delete the user and see them no longer in the participants list.&lt;br /&gt;
&lt;br /&gt;
==Future Enhancements==&lt;br /&gt;
&lt;br /&gt;
*Detailed Statistics: Provide analytics on participation, submission rates, etc., to give instructors a quick overview of assignment engagement.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
*Summarize the improvements, emphasizing the cleaner design, enhanced filtering capabilities, and improved user experience.&lt;br /&gt;
*Highlight the importance of responsive design and ease of use for instructors and administrators managing large classes.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
&lt;br /&gt;
* Chaitanya Srusti &amp;lt;crsrusti@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
* Josh Kersey &amp;lt;jkersey@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video Demo ==&lt;br /&gt;
&amp;lt;link_here&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=160353</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=160353"/>
		<updated>2024-12-04T00:25:58Z</updated>

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

		<summary type="html">&lt;p&gt;Jkersey: /* Files Added / Changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
'''ReviewTableRow.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:ReviewTableRowProps.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Updated the type of row from ReviewData to QuestionFeedback to improve type safety and align with the new interface that fits the component's specific requirements. Renamed showToggleQuestion to isQuestionListVisible for better clarity, indicating that this prop controls the visibility of the question list.&lt;br /&gt;
&lt;br /&gt;
* Extracted the logic for determining the icon (star or tick) based on maxScore into getScoreIcon to make the code more modular and readable.&lt;br /&gt;
&lt;br /&gt;
[[File:ReviewTableHelpers.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Updated this part to use isQuestionListVisible instead of showToggleQuestion, which aligns with the renamed prop. Also, it now calls getScoreIcon to render the icon based on the maximum score for the question type allowing user to differentiate between the questions, keeping the logic clean and separated.&lt;br /&gt;
&lt;br /&gt;
[[File:HeaderCells.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* This component generates header cells for each review, improving code reusability and reducing duplication in the main component.&lt;br /&gt;
&lt;br /&gt;
[[File:Toggles.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* This toggle function now uses the SORT_ORDER_SEQUENCE constant for simpler and cleaner logic when toggling the sort order. The toggleVisibility helper function reduces redundancy in toggling visibility, making it reusable for various states. This renderSortIcon function centralizes sort icon logic, making it easier to adjust the icon display in one place.&lt;br /&gt;
&lt;br /&gt;
[[File:RenameState.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Renamed props and state variables (currentRound to selectedRound, sortOrderRow to rowSortOrder, etc.) to enhance clarity and consistency with naming conventions.&lt;br /&gt;
&lt;br /&gt;
'''ShowReviews.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:RoundHeading.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Extracted the round title display as a separate RoundHeading component for cleaner and more modular code.&lt;br /&gt;
&lt;br /&gt;
* Extracted the review title display with conditional reviewer name as a ReviewHeading component to simplify the main ShowReviews component and make the reviewer name logic clearer.&lt;br /&gt;
&lt;br /&gt;
* The QuestionReview component now handles each question’s review and score display, which reduces code duplication and enhances readability by encapsulating the question review logic.&lt;br /&gt;
&lt;br /&gt;
'''Statistics.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:ToggleButton.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Moved the toggle functionality for visibility (such as &amp;quot;Show/Hide Stats,&amp;quot; &amp;quot;Show/Hide Reviews,&amp;quot; and &amp;quot;Show/Hide Author Feedback&amp;quot;) into a reusable ToggleButton component, improving modularity and readability. Used the toggleVisibility function from utils to manage the visibility state in a cleaner and reusable manner.&lt;br /&gt;
&lt;br /&gt;
[[File:TotalReviews.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* The helper function, getTotalReviewsForQuestion, was created to handle calculating totals for reviews and feedback, making the code more concise and reusable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Enhanced methods and commit link&lt;br /&gt;
|-&lt;br /&gt;
! File !! Purpose !! Rationale !! CommitLink&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss (@media) || create a responsive, accessible table layout that maintains readability and usability across all screen sizes || optimize screen space and enhance user experience, ensuring the table is easily viewable and navigable on devices from desktops to small smartphones. || [https://github.com/manideepika21/reimplementation-front-end/commit/01d37a3ac96344a8a8ca174a3e72b928bb67cc18 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss (tbl_heat) || Adjusted table width. Fixed the table size to adjust dynamically according to the zoom level. Modified the question column for better alignment to the left and added labels to differentiate types of questions more clearly. || enhance the table's usability and clarity by ensuring it dynamically resizes according to the user’s zoom level, maintaining readability without manual adjustments. Aligning the question column to the left and adding labels improves visual organization and helps users quickly differentiate question types, making the data easier to scan and understand. || [https://github.com/manideepika21/reimplementation-front-end/commit/a6a92eab85542c76e98f870946429d93149850b8 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss(tbl_heat td[data-question]:hover::after) || Enhanced tooltip for comments || improve user experience by making information more accessible and easier to read. An improved tooltip provides clear, immediate feedback, allowing users to view additional details without disrupting their workflow, ultimately enhancing clarity and interactivity within the interface. || [https://github.com/manideepika21/reimplementation-front-end/commit/fef65d58c1607bd244c541057f1ddd9ba36e9501 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| || Modified code for better readability and satisfying the principles and added comments || enhance readability and maintainability by adhering to coding principles like Single Responsibility and DRY (Don't Repeat Yourself), which improve the structure and clarity of the code. Adding comments further aids in understanding by providing context and explanations, making it easier for current and future developers to follow the logic, troubleshoot, and extend functionality. || [https://github.com/manideepika21/reimplementation-front-end/commit/a61cb4039bacb7deb1c2b0f1a0cc966d365874f7 CommitLink]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: Dhananjay-Raghu)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/68&lt;br /&gt;
* '''Video of UI/UX Improvements''' https://drive.google.com/file/d/1_-VzUDZGCV_3VzQzh5ucPA8uptkuVh78/view?usp=sharing&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=158436</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=158436"/>
		<updated>2024-10-30T03:18:33Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Contributors to this project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
'''ReviewTableRow.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:ReviewTableRowProps.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Updated the type of row from ReviewData to QuestionFeedback to improve type safety and align with the new interface that fits the component's specific requirements. Renamed showToggleQuestion to isQuestionListVisible for better clarity, indicating that this prop controls the visibility of the question list.&lt;br /&gt;
&lt;br /&gt;
* Extracted the logic for determining the icon (star or tick) based on maxScore into getScoreIcon to make the code more modular and readable.&lt;br /&gt;
&lt;br /&gt;
[[File:ReviewTableHelpers.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Updated this part to use isQuestionListVisible instead of showToggleQuestion, which aligns with the renamed prop. Also, it now calls getScoreIcon to render the icon based on the maximum score for the question type allowing user to differentiate between the questions, keeping the logic clean and separated.&lt;br /&gt;
&lt;br /&gt;
[[File:HeaderCells.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* This component generates header cells for each review, improving code reusability and reducing duplication in the main component.&lt;br /&gt;
&lt;br /&gt;
[[File:Toggles.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* This toggle function now uses the SORT_ORDER_SEQUENCE constant for simpler and cleaner logic when toggling the sort order. The toggleVisibility helper function reduces redundancy in toggling visibility, making it reusable for various states. This renderSortIcon function centralizes sort icon logic, making it easier to adjust the icon display in one place.&lt;br /&gt;
&lt;br /&gt;
[[File:RenameState.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Renamed props and state variables (currentRound to selectedRound, sortOrderRow to rowSortOrder, etc.) to enhance clarity and consistency with naming conventions.&lt;br /&gt;
&lt;br /&gt;
'''ShowReviews.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:RoundHeading.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Extracted the round title display as a separate RoundHeading component for cleaner and more modular code.&lt;br /&gt;
&lt;br /&gt;
* Extracted the review title display with conditional reviewer name as a ReviewHeading component to simplify the main ShowReviews component and make the reviewer name logic clearer.&lt;br /&gt;
&lt;br /&gt;
* The QuestionReview component now handles each question’s review and score display, which reduces code duplication and enhances readability by encapsulating the question review logic.&lt;br /&gt;
&lt;br /&gt;
'''Statistics.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:ToggleButton.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Moved the toggle functionality for visibility (such as &amp;quot;Show/Hide Stats,&amp;quot; &amp;quot;Show/Hide Reviews,&amp;quot; and &amp;quot;Show/Hide Author Feedback&amp;quot;) into a reusable ToggleButton component, improving modularity and readability. Used the toggleVisibility function from utils to manage the visibility state in a cleaner and reusable manner.&lt;br /&gt;
&lt;br /&gt;
[[File:TotalReviews.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* The helper function, getTotalReviewsForQuestion, was created to handle calculating totals for reviews and feedback, making the code more concise and reusable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Enhanced methods and commit link&lt;br /&gt;
|-&lt;br /&gt;
! File !! Purpose !! Rationale !! CommitLink&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss (@media) || create a responsive, accessible table layout that maintains readability and usability across all screen sizes || optimize screen space and enhance user experience, ensuring the table is easily viewable and navigable on devices from desktops to small smartphones. || [https://github.com/manideepika21/reimplementation-front-end/commit/01d37a3ac96344a8a8ca174a3e72b928bb67cc18 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss (tbl_heat) || Adjusted table width. Fixed the table size to adjust dynamically according to the zoom level. Modified the question column for better alignment to the left and added labels to differentiate types of questions more clearly. || enhance the table's usability and clarity by ensuring it dynamically resizes according to the user’s zoom level, maintaining readability without manual adjustments. Aligning the question column to the left and adding labels improves visual organization and helps users quickly differentiate question types, making the data easier to scan and understand. || [https://github.com/manideepika21/reimplementation-front-end/commit/f913b9c32f08066e1c2c033ac1123d9ac02bc95c CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss(tbl_heat td[data-question]:hover::after) || Enhanced tooltip for comments || improve user experience by making information more accessible and easier to read. An improved tooltip provides clear, immediate feedback, allowing users to view additional details without disrupting their workflow, ultimately enhancing clarity and interactivity within the interface. || [https://github.com/manideepika21/reimplementation-front-end/commit/fef65d58c1607bd244c541057f1ddd9ba36e9501 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| || Modified code for better readability and satisfying the principles and added comments || enhance readability and maintainability by adhering to coding principles like Single Responsibility and DRY (Don't Repeat Yourself), which improve the structure and clarity of the code. Adding comments further aids in understanding by providing context and explanations, making it easier for current and future developers to follow the logic, troubleshoot, and extend functionality. || [https://github.com/manideepika21/reimplementation-front-end/commit/a61cb4039bacb7deb1c2b0f1a0cc966d365874f7 CommitLink]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: Dhananjay-Raghu)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/68&lt;br /&gt;
* '''Video of UI/UX Improvements''' https://drive.google.com/file/d/1_-VzUDZGCV_3VzQzh5ucPA8uptkuVh78/view?usp=sharing&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=158168</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=158168"/>
		<updated>2024-10-30T02:10:41Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Files Added / Changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
'''ReviewTableRow.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:ReviewTableRowProps.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Updated the type of row from ReviewData to QuestionFeedback to improve type safety and align with the new interface that fits the component's specific requirements. Renamed showToggleQuestion to isQuestionListVisible for better clarity, indicating that this prop controls the visibility of the question list.&lt;br /&gt;
&lt;br /&gt;
* Extracted the logic for determining the icon (star or tick) based on maxScore into getScoreIcon to make the code more modular and readable.&lt;br /&gt;
&lt;br /&gt;
[[File:ReviewTableHelpers.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Updated this part to use isQuestionListVisible instead of showToggleQuestion, which aligns with the renamed prop. Also, it now calls getScoreIcon to render the icon based on the maximum score for the question type allowing user to differentiate between the questions, keeping the logic clean and separated.&lt;br /&gt;
&lt;br /&gt;
[[File:HeaderCells.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* This component generates header cells for each review, improving code reusability and reducing duplication in the main component.&lt;br /&gt;
&lt;br /&gt;
[[File:Toggles.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* This toggle function now uses the SORT_ORDER_SEQUENCE constant for simpler and cleaner logic when toggling the sort order. The toggleVisibility helper function reduces redundancy in toggling visibility, making it reusable for various states. This renderSortIcon function centralizes sort icon logic, making it easier to adjust the icon display in one place.&lt;br /&gt;
&lt;br /&gt;
[[File:RenameState.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Renamed props and state variables (currentRound to selectedRound, sortOrderRow to rowSortOrder, etc.) to enhance clarity and consistency with naming conventions.&lt;br /&gt;
&lt;br /&gt;
'''ShowReviews.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:RoundHeading.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Extracted the round title display as a separate RoundHeading component for cleaner and more modular code.&lt;br /&gt;
&lt;br /&gt;
* Extracted the review title display with conditional reviewer name as a ReviewHeading component to simplify the main ShowReviews component and make the reviewer name logic clearer.&lt;br /&gt;
&lt;br /&gt;
* The QuestionReview component now handles each question’s review and score display, which reduces code duplication and enhances readability by encapsulating the question review logic.&lt;br /&gt;
&lt;br /&gt;
'''Statistics.tsx'''&lt;br /&gt;
&lt;br /&gt;
[[File:ToggleButton.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* Moved the toggle functionality for visibility (such as &amp;quot;Show/Hide Stats,&amp;quot; &amp;quot;Show/Hide Reviews,&amp;quot; and &amp;quot;Show/Hide Author Feedback&amp;quot;) into a reusable ToggleButton component, improving modularity and readability. Used the toggleVisibility function from utils to manage the visibility state in a cleaner and reusable manner.&lt;br /&gt;
&lt;br /&gt;
[[File:TotalReviews.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
* The helper function, getTotalReviewsForQuestion, was created to handle calculating totals for reviews and feedback, making the code more concise and reusable.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|+ Enhanced methods and commit link&lt;br /&gt;
|-&lt;br /&gt;
! File !! Purpose !! Rationale !! CommitLink&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss (@media) || create a responsive, accessible table layout that maintains readability and usability across all screen sizes || optimize screen space and enhance user experience, ensuring the table is easily viewable and navigable on devices from desktops to small smartphones. || [https://github.com/manideepika21/reimplementation-front-end/commit/01d37a3ac96344a8a8ca174a3e72b928bb67cc18 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss (tbl_heat) || Adjusted table width. Fixed the table size to adjust dynamically according to the zoom level. Modified the question column for better alignment to the left and added labels to differentiate types of questions more clearly. || enhance the table's usability and clarity by ensuring it dynamically resizes according to the user’s zoom level, maintaining readability without manual adjustments. Aligning the question column to the left and adding labels improves visual organization and helps users quickly differentiate question types, making the data easier to scan and understand. || [https://github.com/manideepika21/reimplementation-front-end/commit/f913b9c32f08066e1c2c033ac1123d9ac02bc95c CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| Grades.scss(tbl_heat td[data-question]:hover::after) || Enhanced tooltip for comments || improve user experience by making information more accessible and easier to read. An improved tooltip provides clear, immediate feedback, allowing users to view additional details without disrupting their workflow, ultimately enhancing clarity and interactivity within the interface. || [https://github.com/manideepika21/reimplementation-front-end/commit/fef65d58c1607bd244c541057f1ddd9ba36e9501 CommitLink]&lt;br /&gt;
|-&lt;br /&gt;
| || Modified code for better readability and satisfying the principles and added comments || enhance readability and maintainability by adhering to coding principles like Single Responsibility and DRY (Don't Repeat Yourself), which improve the structure and clarity of the code. Adding comments further aids in understanding by providing context and explanations, making it easier for current and future developers to follow the logic, troubleshoot, and extend functionality. || [https://github.com/manideepika21/reimplementation-front-end/commit/a61cb4039bacb7deb1c2b0f1a0cc966d365874f7 CommitLink]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: Dhananjay-Raghu)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
* '''Video of UI/UX Improvements''' https://drive.google.com/file/d/1_-VzUDZGCV_3VzQzh5ucPA8uptkuVh78/view?usp=sharing&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:TotalReviews.png&amp;diff=158143</id>
		<title>File:TotalReviews.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:TotalReviews.png&amp;diff=158143"/>
		<updated>2024-10-30T02:01:30Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ToggleButton.png&amp;diff=158141</id>
		<title>File:ToggleButton.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ToggleButton.png&amp;diff=158141"/>
		<updated>2024-10-30T02:00:15Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:RoundHeading.png&amp;diff=158138</id>
		<title>File:RoundHeading.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:RoundHeading.png&amp;diff=158138"/>
		<updated>2024-10-30T01:58:21Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:RenameState.png&amp;diff=158125</id>
		<title>File:RenameState.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:RenameState.png&amp;diff=158125"/>
		<updated>2024-10-30T01:55:13Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Toggles.png&amp;diff=158122</id>
		<title>File:Toggles.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Toggles.png&amp;diff=158122"/>
		<updated>2024-10-30T01:54:11Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:HeaderCells.png&amp;diff=158118</id>
		<title>File:HeaderCells.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:HeaderCells.png&amp;diff=158118"/>
		<updated>2024-10-30T01:52:08Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewTableHelpers.png&amp;diff=158112</id>
		<title>File:ReviewTableHelpers.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewTableHelpers.png&amp;diff=158112"/>
		<updated>2024-10-30T01:48:53Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewTableRowProps.png&amp;diff=158103</id>
		<title>File:ReviewTableRowProps.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ReviewTableRowProps.png&amp;diff=158103"/>
		<updated>2024-10-30T01:46:07Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157798</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157798"/>
		<updated>2024-10-29T22:44:03Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Contributors to this project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: Dhananjay-Raghu)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
* '''Video of UI/UX Improvements''' https://drive.google.com/file/d/1_-VzUDZGCV_3VzQzh5ucPA8uptkuVh78/view?usp=sharing&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157778</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157778"/>
		<updated>2024-10-29T22:29:22Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Contributors to this project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: Dhananjay-Raghu)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157756</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157756"/>
		<updated>2024-10-29T22:16:59Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Existing Heatgrid Component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157754</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157754"/>
		<updated>2024-10-29T22:16:50Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* New Heatgrid Component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157750</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157750"/>
		<updated>2024-10-29T22:15:57Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* New Heatgrid Component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;max-width: 100%; height: auto;&amp;quot;&amp;gt;&lt;br /&gt;
[[File:NewHeatgrid.png]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157745</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157745"/>
		<updated>2024-10-29T22:14:21Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* New Heatgrid Component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:NewHeatgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:NewHeatgrid.png&amp;diff=157743</id>
		<title>File:NewHeatgrid.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:NewHeatgrid.png&amp;diff=157743"/>
		<updated>2024-10-29T22:13:51Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157739</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157739"/>
		<updated>2024-10-29T22:11:17Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Existing Heatgrid Component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[File:OldHeatgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:OldHeatgrid.png&amp;diff=157738</id>
		<title>File:OldHeatgrid.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:OldHeatgrid.png&amp;diff=157738"/>
		<updated>2024-10-29T22:10:56Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: Old heatgrid implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Old heatgrid implementation&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157737</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157737"/>
		<updated>2024-10-29T22:10:22Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: /* Existing Heatgrid Component */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
[[OldHeatgrid:Old_heatgrid.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157270</id>
		<title>CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024_-_E2482._Reimplement_heatgrid_for_reviews&amp;diff=157270"/>
		<updated>2024-10-28T16:48:49Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: Created page with &amp;quot;== Reimplement Heatgrid for Reviews ==  The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devic...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reimplement Heatgrid for Reviews ==&lt;br /&gt;
&lt;br /&gt;
The '''Heatgrid for Reviews''' project, built with '''React''', is a robust, interactive component designed to provide a clear and comprehensive overview of review grades across assignments. This new implementation enhances the usability of the current review heatgrid in Expertiza by focusing on accessibility, responsiveness, and an intuitive layout, ensuring a seamless experience for students, faculty, and other users across devices.&lt;br /&gt;
&lt;br /&gt;
The '''heatgrid''' displays all grades assigned to each question by every reviewer. This redesign introduces a customized view based on the user's role, making it particularly valuable for both faculty and students, who each benefit from distinct perspectives of the heatgrid's data.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
The main objective of this reimplementation is to establish a clean, visually appealing, and responsive heatgrid UI that maintains its layout across multiple screen sizes and devices. The project will include error-handling mechanisms to address potential data issues, providing reliability and consistency to users.&lt;br /&gt;
&lt;br /&gt;
== Existing Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;Current Heatgrid component in Expertiza&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Requirements ==&lt;br /&gt;
&lt;br /&gt;
1. '''User-Focused Design'''&lt;br /&gt;
   - '''Goal:''' Design an interface that’s user-friendly, intuitive, and allows for easy navigation.&lt;br /&gt;
   - '''Features:''' Provide ample spacing for data display, enhance readability, and ensure orderly arrangement of information.&lt;br /&gt;
&lt;br /&gt;
2. '''Responsive Design'''&lt;br /&gt;
   - '''Goal:''' Ensure seamless functionality and readability across various devices and screen sizes.&lt;br /&gt;
   - '''Features:''' Responsive layouts for mobile, tablet, and desktop views.&lt;br /&gt;
&lt;br /&gt;
3. '''Error Handling'''&lt;br /&gt;
   - '''Goal:''' Implement robust error handling for reliable UI performance.&lt;br /&gt;
   - '''Features:''' Address and handle invalid or missing data gracefully within the heatgrid view.&lt;br /&gt;
&lt;br /&gt;
4. '''Testing'''&lt;br /&gt;
   - '''Goal:''' Conduct rigorous testing to guarantee component functionality and reliability.&lt;br /&gt;
   - '''Features:''' Test for both user interactions and error scenarios.&lt;br /&gt;
&lt;br /&gt;
== Reimplementation Details ==&lt;br /&gt;
&lt;br /&gt;
=== Technologies ===&lt;br /&gt;
* '''React:''' For building a component-based architecture.&lt;br /&gt;
* '''TypeScript:''' Ensures type safety and easier maintenance.&lt;br /&gt;
&lt;br /&gt;
=== Key Implementation Steps ===&lt;br /&gt;
* '''Component Development:''' Refactor existing logic to create reusable, modular components with a clear structure.&lt;br /&gt;
* '''Error Handling:''' Implement catch blocks and fallback displays for missing or invalid data.&lt;br /&gt;
* '''Responsiveness:''' Use media queries and flex/grid layouts to adapt to different screen sizes.&lt;br /&gt;
* '''Role-Based Display:''' Customize heatgrid view based on whether the user is a student or faculty member.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) ===&lt;br /&gt;
* Each component will serve a single function to improve code clarity and modularity.&lt;br /&gt;
&lt;br /&gt;
=== Separation of Concerns (SoC) ===&lt;br /&gt;
* Different sections of the heatgrid will be organized into specific components for better maintainability.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) ===&lt;br /&gt;
* Shared logic will be consolidated into utilities and hooks to prevent code duplication.&lt;br /&gt;
&lt;br /&gt;
=== Open/Closed Principle (OCP) ===&lt;br /&gt;
* Components will be designed to allow extension for future enhancements without modification.&lt;br /&gt;
&lt;br /&gt;
== Files Added / Changed ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== New Heatgrid Component ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TODO_ADD_ME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;text-align: center;&amp;quot;&amp;gt;New Heatgrid Component for Reviews&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The newly implemented heatgrid component provides an updated, refined experience, ensuring all the existing features while making the view more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
* '''Rendering Validation''': Ensure all elements render correctly across devices.&lt;br /&gt;
* '''Styling Consistency''': Verify uniform styling across the component.&lt;br /&gt;
* '''Functionality Tests''': Confirm buttons and other dynamic elements work as expected.&lt;br /&gt;
* '''Responsive Design Testing''': Ensure adaptability to different screen sizes.&lt;br /&gt;
* '''Integration Testing''': Validate seamless data flow between heatgrid components.&lt;br /&gt;
* '''Cross-Browser Testing''': Test on Chrome, Firefox, Safari, and Edge to ensure broad compatibility.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
=== Mentor ===&lt;br /&gt;
* '''Sahil Sawant''' (ssawant2@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
=== Members ===&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (mmyaka@ncsu.edu)&lt;br /&gt;
* '''Dhananjay Raghu''' (draghu@ncsu.edu)&lt;br /&gt;
* '''Josh Kersey''' (jkersey@ncsu.edu)&lt;br /&gt;
&lt;br /&gt;
== Contributors to this project ==&lt;br /&gt;
* '''Manideepika Reddy Myaka''' (unityid: mmyaka, github: manideepika21)&lt;br /&gt;
* '''Dhananjay Raghu''' (unityid: draghu, github: &amp;lt;TODO_ADD_ME&amp;gt;)&lt;br /&gt;
* '''Josh Kersey''' (unityid: jkersey, github: pulanski)&lt;br /&gt;
* '''Github repo''' https://github.com/manideepika21/reimplementation-front-end&lt;br /&gt;
* '''Link to PR''' https://github.com/expertiza/reimplementation-front-end/pull/&amp;lt;TODO_ADD_ME&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=157268</id>
		<title>CSC/ECE 517 Fall 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2024&amp;diff=157268"/>
		<updated>2024-10-28T16:25:43Z</updated>

		<summary type="html">&lt;p&gt;Jkersey: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Fall 2024 - E2454. Refactor student_task.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2466. UI for Impersonate User]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2456. Refactor teams_user.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2465. UI for Institutions and Notification]]&lt;br /&gt;
* [[CSC/ECE 517 Fall 2024 - E2482. Reimplement heatgrid for reviews]]&lt;/div&gt;</summary>
		<author><name>Jkersey</name></author>
	</entry>
</feed>