<?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=Mkolish</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=Mkolish"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Mkolish"/>
	<updated>2026-08-18T19:17:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=156978</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=156978"/>
		<updated>2024-05-01T22:45:42Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
Previous implementation of Expertiza:&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment participants.jpeg | 900px]]&lt;br /&gt;
&lt;br /&gt;
Our implementation of Expertiza:&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually.&lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
1. Select user from the user dropdown.&lt;br /&gt;
&lt;br /&gt;
[[File: UserDropdown.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
2. Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
&lt;br /&gt;
[[File: HoverRole.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
3. Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
&lt;br /&gt;
4. The Add button is enabled only after the user and role are selected.&lt;br /&gt;
&lt;br /&gt;
5. Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
&lt;br /&gt;
[[File: AddButton.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
6. Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
[[File: CreationSuccess.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
1. Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
&lt;br /&gt;
[[File: DeleteButton.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
2. Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
&lt;br /&gt;
3. Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[[File: DeletePopup.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
4. Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
5. Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
6. Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
[[File: DeletionSuccess.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024&amp;diff=156623</id>
		<title>CSC/ECE 517 Spring 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024&amp;diff=156623"/>
		<updated>2024-04-24T02:41:15Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Spring 2024 - E2401 Implementing and testing import &amp;amp; export controllers]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2405 Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2407 Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2418. Reimplement of due date.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2428 Replicate Roles and Institution UIs ReactJS]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2429 Reimplement student_task list]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2430 Reimplement student_task view]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2410. View for Results of Bidding ]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2410. View for Results of Bidding (Phase 2) ]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2414 Grading Audit Trail]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - NTNX-1 : Extend NDB Operator to Support Postgres HA]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - ‬NTNX-2‬‭ : Snapshot Functionality for provisioned databases]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2411 : Fix &amp;quot;Back&amp;quot; link on “New Late Policy” page]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2416.  Reimplement the Question hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2420. Reimplement student_quizzes_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2424. Reimplement the Bookmarks Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2426. Create a UI for Assignment Edit page &amp;quot;Etc&amp;quot; tab in ReactJS]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2417. Reimplement submitted content controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2417. Reimplement submitted content controller.rb (Phase 2)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2425. Create a Courses user interface in ReactJS]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2431. Reimplement  grades/view_team]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2404 Refactor student teams functionality]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2406 Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2403 Mentor-Meeting Management]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2421. Reimplement impersonating users (within impersonate controller.rb) - Final Project]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2413. Testing - Answer Tagging]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2412. Testing for hamer.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2427. UI for questionnaire.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2419. Reimplement duties controller.rb and badges controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - G2402 Implement REST client, REST API, and Graphql API endpoint for repositories]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - G2400 DevOp for GitHub Miner app]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2439 Testing for view_translation_substitutor.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2442 Reimplement student task controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2443 Reimplement grades_controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2434 Reimplement Frontend for the Grades view]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2435 Implement Frontend for the My Profile]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2446 Implement Front End for Student Task List]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2444 Implement Frontend for the Review]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2440 Testing for questionnaire_helper, review_bids_helper]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2433 Implement UI for the Student Teams]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2415. Reimplement responses controller.rb (Design Document)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2445. Implement BackEnd for participants.rb (Design Document)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2445. Implement BackEnd for participants.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2441 Reimplement grades/view_team (Phase 2)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2418. Reimplement of due date.rb (Phase 2)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb]]&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155993</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155993"/>
		<updated>2024-04-23T06:06:21Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* 3. Delete Participant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually.&lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
1. Select user from the user dropdown.&lt;br /&gt;
&lt;br /&gt;
[[File: UserDropdown.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
2. Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
&lt;br /&gt;
[[File: HoverRole.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
3. Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
&lt;br /&gt;
4. The Add button is enabled only after the user and role are selected.&lt;br /&gt;
&lt;br /&gt;
5. Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
&lt;br /&gt;
[[File: AddButton.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
6. Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
[[File: CreationSuccess.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
1. Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
&lt;br /&gt;
[[File: DeleteButton.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
2. Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
&lt;br /&gt;
3. Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[[File: DeletePopup.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
4. Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
5. Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
6. Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
[[File: DeletionSuccess.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155992</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155992"/>
		<updated>2024-04-23T06:04:13Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* 2. Add Participant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually.&lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
1. Select user from the user dropdown.&lt;br /&gt;
&lt;br /&gt;
[[File: UserDropdown.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
2. Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
&lt;br /&gt;
[[File: HoverRole.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
3. Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
&lt;br /&gt;
4. The Add button is enabled only after the user and role are selected.&lt;br /&gt;
&lt;br /&gt;
5. Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
&lt;br /&gt;
[[File: AddButton.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
6. Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
[[File: CreationSuccess.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:HoverRole.png&amp;diff=155991</id>
		<title>File:HoverRole.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:HoverRole.png&amp;diff=155991"/>
		<updated>2024-04-23T05:58:51Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155990</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155990"/>
		<updated>2024-04-23T05:57:04Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Testing Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually.&lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:UserDropdown.png&amp;diff=155989</id>
		<title>File:UserDropdown.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:UserDropdown.png&amp;diff=155989"/>
		<updated>2024-04-23T05:56:46Z</updated>

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

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

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

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

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

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155983</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155983"/>
		<updated>2024-04-23T05:45:01Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* 5. Simplified Email Preferences and Search Functionality Removal: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155982</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155982"/>
		<updated>2024-04-23T05:42:41Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* 4. Assignment Role Selection: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155981</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155981"/>
		<updated>2024-04-23T05:42:20Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participantss.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Manage_Participantss.png&amp;diff=155980</id>
		<title>File:Manage Participantss.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Manage_Participantss.png&amp;diff=155980"/>
		<updated>2024-04-23T05:42:01Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155979</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155979"/>
		<updated>2024-04-23T05:41:02Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage_Participants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155978</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155978"/>
		<updated>2024-04-23T05:40:39Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: Manage Participants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Manage_Participants.png&amp;diff=155977</id>
		<title>File:Manage Participants.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Manage_Participants.png&amp;diff=155977"/>
		<updated>2024-04-23T05:39:44Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: Mkolish uploaded a new version of File:Manage Participants.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Page showing participants&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155976</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155976"/>
		<updated>2024-04-23T05:28:44Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* 2. Add Participant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer. The description of each type of role must be visible when hovered over the tool tips.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155975</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155975"/>
		<updated>2024-04-23T05:25:36Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* 2. Add Participant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button and confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155974</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155974"/>
		<updated>2024-04-23T05:19:24Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer.&lt;br /&gt;
# The Add button is enabled only after the user and role are selected.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155973</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155973"/>
		<updated>2024-04-23T05:18:28Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer.&lt;br /&gt;
# Hover over the &amp;quot;Add&amp;quot; button located at the top left corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Click on the &amp;quot;Add&amp;quot; button.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155960</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155960"/>
		<updated>2024-04-23T05:05:54Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155944</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155944"/>
		<updated>2024-04-23T04:14:46Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, the URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
=== 2. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We have re-envisioned the participant management process for greater efficiency and user-friendliness. The previous functionality allowed for editing participants, which involved complex search queries across an extensive database of users and subsequent updates to fields. Given the complexity and resource intensity of this operation, particularly with a large number of users, we have observed that it's more streamlined to handle such changes through a deletion and recreation strategy. This method proves to be more straightforward and less error-prone than the in-place editing of user roles. As such, the edit participant feature has been deprecated. Now, modifications to participant information are handled cleanly and efficiently by removing the existing participant entry and creating a new one with the desired role and permissions, ensuring a clear state with each change and a more intuitive experience for administrators.&lt;br /&gt;
&lt;br /&gt;
=== 3. Participant User Dropdown: ===&lt;br /&gt;
Participant creation form is removed and a new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 4. Assignment Role Selection: ===&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
[[File: ManageParticipants.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== 5. Simplified Email Preferences and Search Functionality Removal: ===&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features. The search function was underutilized and contributed to interface clutter. The interface now has a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; is visible.&lt;br /&gt;
# Select user from the user dropdown.&lt;br /&gt;
# Hover over the tool tip of each role and check if the description is visible.&lt;br /&gt;
# Select role of the participant i.e, either participant, reader, submitter or reviewer.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ManageParticipants.png&amp;diff=155912</id>
		<title>File:ManageParticipants.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ManageParticipants.png&amp;diff=155912"/>
		<updated>2024-04-23T02:53:22Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155911</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155911"/>
		<updated>2024-04-23T02:50:05Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Design to be implemented: ===&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment participants.jpeg | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Assignments/Assignment.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/public/assets/icons/info.png]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==List of changes==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
4 '''Participant User Dropdown'''&lt;br /&gt;
A new dropdown menu has been added to the user interface. This allows administrators to select a user and assign them as a participant within the platform. The dropdown is a part of the enhanced user management system, which streamlines user role assignments.&lt;br /&gt;
&lt;br /&gt;
5. '''Assignment Role Selection'''&lt;br /&gt;
Radio buttons have been introduced for the assignment of specific roles. This selection mechanism enables a clear distinction between roles such as 'Participant', 'Reader', 'Reviewer', 'Submitter', or 'Mentor'. The purpose of these buttons is to facilitate the straightforward assignment of roles and ensure each user's responsibilities are clearly defined.&lt;br /&gt;
&lt;br /&gt;
6. '''Simplified Email Preferences'''&lt;br /&gt;
To avoid cluttering the user interface and to improve overall user experience, the email preferences feature has been removed. This change supports a more focused approach to user interaction, removing less frequently used options and emphasizing the platform's primary features.&lt;br /&gt;
&lt;br /&gt;
7. '''Search Functionality Removal'''&lt;br /&gt;
The search functionality has been removed following an assessment of its necessity. The decision to remove this feature was based on user behavior analysis, which indicated that the search function was underutilized and contributed to interface clutter. The streamlined interface now promotes a more focused user experience with an emphasis on core functionalities.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Edit Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Edit Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Edit Participant&amp;quot; icon and confirm that the edit participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without editing a new participant.&lt;br /&gt;
# Verify that the edit participant popup window closes after successfully editing a participant.&lt;br /&gt;
# Confirm that the edited user is updated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 4. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155131</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155131"/>
		<updated>2024-04-08T21:13:29Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Design to be implemented: ===&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment participants.jpeg | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Edit Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Edit Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Edit Participant&amp;quot; icon and confirm that the edit participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without editing a new participant.&lt;br /&gt;
# Verify that the edit participant popup window closes after successfully editing a participant.&lt;br /&gt;
# Confirm that the edited user is updated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 4. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155129</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155129"/>
		<updated>2024-04-08T21:11:16Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment participants.jpeg | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Edit Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Edit Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Edit Participant&amp;quot; icon and confirm that the edit participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without editing a new participant.&lt;br /&gt;
# Verify that the edit participant popup window closes after successfully editing a participant.&lt;br /&gt;
# Confirm that the edited user is updated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 4. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_participants.jpeg&amp;diff=155125</id>
		<title>File:Assignment participants.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Assignment_participants.jpeg&amp;diff=155125"/>
		<updated>2024-04-08T21:08:17Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155071</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155071"/>
		<updated>2024-04-08T19:51:54Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Testing Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Edit Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Edit Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Edit Participant&amp;quot; icon and confirm that the edit participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without editing a new participant.&lt;br /&gt;
# Verify that the edit participant popup window closes after successfully editing a participant.&lt;br /&gt;
# Confirm that the edited user is updated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 4. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155064</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155064"/>
		<updated>2024-04-08T19:34:50Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Testing Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID, as well as a separate role attribute.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu near the user selection, populated with user options. Additionally, we included a separate dropdown for roles, allowing users to select the appropriate role for each participant. This setup ensures that roles are accurately associated with the model structure and maintains a direct link with assignment IDs. This streamlining reduces confusion and optimizes the creation process. Users can now efficiently assign participants with their respective roles, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Edit Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Edit Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Edit Participant&amp;quot; icon and confirm that the edit participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without editing a new participant.&lt;br /&gt;
# Verify that the edit participant popup window closes after successfully editing a participant.&lt;br /&gt;
# Confirm that the edited user is updated in the participants table.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155053</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155053"/>
		<updated>2024-04-08T19:07:37Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Testing Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the course in which the given assignment is present.&lt;br /&gt;
# The popup window also contains a dropdown which has role of the participant i.e, either submitter, reviewer, participant or reader.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155041</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155041"/>
		<updated>2024-04-08T18:58:41Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* List of changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155039</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155039"/>
		<updated>2024-04-08T18:58:23Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* URL Restructuring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155038</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155038"/>
		<updated>2024-04-08T18:58:09Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: /* Design */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:DesignDiagram.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155027</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_participants.rb&amp;diff=155027"/>
		<updated>2024-04-08T18:44:41Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: Created page with &amp;quot;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.  == Description == The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''' New Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154329</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154329"/>
		<updated>2024-03-25T01:36:59Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''' New Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here :[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm  Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154328</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154328"/>
		<updated>2024-03-25T01:36:10Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''' New Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here:[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154326</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154326"/>
		<updated>2024-03-25T01:35:29Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''' New Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here: *[https://docs.google.com/document/d/1M0FRp_LqrkQ9E03rIqGM30PpP9UyOpmBEvS0seIWBGw/edit#heading=h.sp8wl52rdnqm Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154303</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154303"/>
		<updated>2024-03-25T01:26:20Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''' New Form: '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu: '''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend by following the instructions given here: *[https://github.com/expertiza/reimplementation-back-end Backend Setup Instructions]&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
=== 1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants: ===&lt;br /&gt;
&lt;br /&gt;
Initially, our URL was set as &amp;quot;assignments/participants.&amp;quot; However, we updated it to &amp;quot;assignments/{id}/participants&amp;quot; because participants are closely tied to specific assignments. We changed by examining of the participant model, which indicated that participants belong to only users and assignments. As a result, each participant needs to be associated with a unique assignment ID. This adjustment ensures a more accurate representation of participant data within the system.&lt;br /&gt;
&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Participant creation form redesigned to include only essential fields and a user dropdown menu: ===&lt;br /&gt;
&lt;br /&gt;
We refined the participant creation form by removing irrelevant fields like role, email, first name, and last name, aligning it with the participant model and the database schema. Instead, we introduced a user dropdown menu, populated with options retrieved from the backend. This approach ensures direct association between participants and assignment IDs, enhancing efficiency and accuracy in participant assignment&lt;br /&gt;
&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
Two interfaces, IParticipantResponse and IParticipantRequest, facilitate communication for user selection. When a user selects a participant from the dropdown, their corresponding details are fetched from the backend. Upon form submission, the system uses the selected user's ID to associate the participant with the chosen assignment. This process simplifies participant management and improves system efficiency.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Edit participant functionality removed, as modification now entails deletion and recreation: ===&lt;br /&gt;
&lt;br /&gt;
We redesigned how participants are created to better align with how modifications are handled. Understanding that editing a participant involves essentially deleting and recreating them, we decided to remove the edit participant feature from the interface. This simplifies the user experience, making it easier for people to navigate and interact with the system seamlessly.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
1. '''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
2. '''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
3. '''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== 1. Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== 2. Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== 3. Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154167</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154167"/>
		<updated>2024-03-25T00:38:59Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
''' New Form '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu. '''&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants:&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
2. Participant creation form redesigned to include only essential fields and a user dropdown menu:&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
3. Edit participant functionality removed, as modification now entails deletion and recreation:&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
'''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
'''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
'''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown:'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition:'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154164</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154164"/>
		<updated>2024-03-25T00:38:06Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
''' New Form '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu. '''&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
1. URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants:&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
2. Participant creation form redesigned to include only essential fields and a user dropdown menu:&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
3. Edit participant functionality removed, as modification now entails deletion and recreation:&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
'''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
'''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
'''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154146</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154146"/>
		<updated>2024-03-25T00:34:01Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward '''/assignments/participants'''. This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to '''/assignments/{id}/participants''', where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/aab1ce22ffeb7404bf3f169d9bb2e5b16a528fe6b Form Refinement] ===&lt;br /&gt;
&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
''' Old Form '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
''' New Form '''&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' The user dropdown fetches user names from the backend and populates the dropdown menu. '''&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/6340611c4b95548edc023c18c77d929bf01ec144 UI Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* '''interfaces.ts''' : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* '''App.tsx''' : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* '''participantColumns.tsx''' : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantEditor.tsx''' : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* '''participantUtil.ts''' : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* '''Participant.tsx''' : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* '''ParticipantDelete.tsx''' : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
# URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants:&lt;br /&gt;
[[File:participant.rb.png | 900px]]&lt;br /&gt;
# Participant creation form redesigned to include only essential fields and a user dropdown menu:&lt;br /&gt;
[[File:schema.rb.png | 900px]]&lt;br /&gt;
# Edit participant functionality removed, as modification now entails deletion and recreation:&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
'''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
'''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
'''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
'''Pop Up window for deleting participant:'''&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant deletion:'''&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Participant.rb.png&amp;diff=154131</id>
		<title>File:Participant.rb.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Participant.rb.png&amp;diff=154131"/>
		<updated>2024-03-25T00:29:13Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Schema.rb.png&amp;diff=154129</id>
		<title>File:Schema.rb.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Schema.rb.png&amp;diff=154129"/>
		<updated>2024-03-25T00:28:57Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154038</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154038"/>
		<updated>2024-03-25T00:06:07Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/mahathii/reimplementation-front-end/commit/d7da1b73de0bad231a2a0b8fa15da2faa848a9eb URL Restructuring] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initially, our website's link to access participant information was straightforward: [http://localhost:3000/assignments/participants](http://localhost:3000/assignments/participants). This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to [http://localhost:3000/assignments/{id}/participants](http://localhost:3000/assignments/{id}/participants), where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Form Refinement ===&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
==== Old Form ====&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
==== New Form ====&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The user dropdown fetches user names from the backend and populates the dropdown menu. ====&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI Restructuring ===&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
== Components ==&lt;br /&gt;
&lt;br /&gt;
* interfaces.ts : This file defines TypeScript interfaces for form-related props and fields used in React components, including options for form elements and Formik field props.&lt;br /&gt;
&lt;br /&gt;
* App.tsx : This file defines the main routing structure of the React application, configuring routes and their corresponding components, including authentication, user management, institution management, roles, assignments, participants, courses, and questionnaire sections.&lt;br /&gt;
&lt;br /&gt;
* participantColumns.tsx : This file defines helper functions to create columns for displaying participant data in a table, including features like sorting, filtering, and actions such as editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* ParticipantEditor.tsx : This file contains a React component for editing participant information within a modal, including form inputs for name, email, role, institution, and email preferences, with validation and submission handling.&lt;br /&gt;
&lt;br /&gt;
* participantUtil.ts : This file provides utility functions and data transformations for managing participant data, including loading participant information, roles, and institutions, and transforming data for API requests and responses.&lt;br /&gt;
&lt;br /&gt;
* Participant.tsx : This file defines a React component for managing participants, including displaying participant data in a table, with options for editing and deleting participants.&lt;br /&gt;
&lt;br /&gt;
* ParticipantDelete.tsx : This file contains a React component for deleting a participant, presenting a modal to confirm deletion and handling the deletion request via an API call.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
# URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants&lt;br /&gt;
# Participant creation form redesigned to include only essential fields and a user dropdown menu.&lt;br /&gt;
# Edit participant functionality removed, as modification now entails deletion and recreation.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
'''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
'''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
'''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
'''User dropdown'''&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
'''Message for successful participant addition'''&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
'''Delete Participant'''&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
==== Pop Up window for deleting participant ====&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
==== Message for successful participant deletion ====&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154014</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154014"/>
		<updated>2024-03-24T23:53:48Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== URL Restructuring: ===&lt;br /&gt;
Initially, our website's link to access participant information was straightforward: [http://localhost:3000/assignments/participants](http://localhost:3000/assignments/participants). This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to [http://localhost:3000/assignments/{id}/participants](http://localhost:3000/assignments/{id}/participants), where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Form Refinement ===&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
==== Old Form ====&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
==== New Form ====&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The user dropdown fetches user names from the backend and populates the dropdown menu. ====&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI Restructuring ===&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
# URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants&lt;br /&gt;
# Participant creation form redesigned to include only essential fields and a user dropdown menu.&lt;br /&gt;
# Edit participant functionality removed, as modification now entails deletion and recreation.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
'''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
'''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
'''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
==== User dropdown ====&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
==== Message for successful participant addition ====&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
==== Pop Up window for deleting participant ====&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
==== Message for successful participant deletion ====&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154005</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=154005"/>
		<updated>2024-03-24T23:52:06Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== URL Restructuring: ===&lt;br /&gt;
Initially, our website's link to access participant information was straightforward: [http://localhost:3000/assignments/participants](http://localhost:3000/assignments/participants). This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to [http://localhost:3000/assignments/{id}/participants](http://localhost:3000/assignments/{id}/participants), where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Form Refinement ===&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
==== Old Form ====&lt;br /&gt;
[[File:ParticipantCreate.jpg | 700px]] &lt;br /&gt;
&lt;br /&gt;
==== New Form ====&lt;br /&gt;
[[File:Create_Participant.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The user dropdown fetches user names from the backend and populates the dropdown menu. ====&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI Restructuring ===&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/components/Form/interfaces.ts src/components/Form/interfaces.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/App.tsx src/App.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantColumns.tsx src/pages/Participants/participantColumns.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantEditor.tsx src/pages/Participants/ParticipantEditor.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/participantUtil.ts src/pages/Participants/participantUtil.ts]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/Participant.tsx src/pages/Participants/Participant.tsx]&lt;br /&gt;
* [https://github.com/mahathii/reimplementation-front-end/blob/main/src/pages/Participants/ParticipantDelete.tsx src/pages/Participants/ParticipantDelete.tsx]&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
# URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants&lt;br /&gt;
# Participant creation form redesigned to include only essential fields and a user dropdown menu.&lt;br /&gt;
# Edit participant functionality removed, as modification now entails deletion and recreation.&lt;br /&gt;
&lt;br /&gt;
==Design Patterns==&lt;br /&gt;
&lt;br /&gt;
'''RESTful Design:'''&lt;br /&gt;
&lt;br /&gt;
RESTful Design is an architectural style that emphasizes client-server communications that are stateless, cacheable, and layered. In the context of web development, it involves structuring URLs in a meaningful and hierarchical manner to reflect the relationships between resources.&lt;br /&gt;
&lt;br /&gt;
By restructuring URLs to include specific identifiers for accessing participant information within assignments, the project adopts RESTful principles, making the application more intuitive and navigable. This method enhances the scalability and maintainability of the web services.&lt;br /&gt;
&lt;br /&gt;
This design choice not only improves clarity for developers and users by making URLs self-descriptive but also facilitates better data management and access patterns within the application, aligning with modern web standards.&lt;br /&gt;
&lt;br /&gt;
'''Strategy Pattern:'''&lt;br /&gt;
&lt;br /&gt;
The Strategy Pattern involves defining a family of algorithms, encapsulating each one, and making them interchangeable. This pattern lets the algorithm vary independently from clients that use it, promoting flexibility in the application's functionality.&lt;br /&gt;
&lt;br /&gt;
The form refinement in the project, where a dropdown menu is populated with user options based on the context (like the specific assignment), exemplifies the Strategy Pattern. It allows the selection mechanism in forms to adapt dynamically, improving the user interface and experience.&lt;br /&gt;
&lt;br /&gt;
Employing this pattern enables the application to handle varying requirements gracefully, allowing for a modular approach to form configuration and interaction. This adaptability is crucial for applications that require a high degree of customization and flexibility in user input processing.&lt;br /&gt;
&lt;br /&gt;
'''Facade Pattern (Simplified Interface):'''&lt;br /&gt;
&lt;br /&gt;
The Facade Pattern provides a unified interface to a set of interfaces in a subsystem. It defines a higher-level interface that makes the subsystem easier to use, simplifying complex systems by providing a simple interface.&lt;br /&gt;
&lt;br /&gt;
In the project, simplifying the participant management interface by removing the edit feature and focusing on streamlined participant addition and removal demonstrates the application of a simplified interface, akin to the Facade Pattern. This change reduces complexity for the end-user, making the system more accessible and user-friendly.&lt;br /&gt;
&lt;br /&gt;
This approach enhances the user experience by reducing the cognitive load and making the interaction with the system more intuitive. It reflects a thoughtful consideration of user needs and system design, aiming to make complex processes as straightforward as possible for users.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
&lt;br /&gt;
==== User dropdown ====&lt;br /&gt;
[[File:AddParticipant.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
==== Message for successful participant addition ====&lt;br /&gt;
[[File:AddedParticipant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
&lt;br /&gt;
==== Pop Up window for deleting participant ====&lt;br /&gt;
[[File:DeletePopUp.jpg | 1000px]] &lt;br /&gt;
&lt;br /&gt;
==== Message for successful participant deletion ====&lt;br /&gt;
[[File:Deleted Participant.jpg | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=153969</id>
		<title>CSC/ECE 517 Spring 2024 - E2432. UI for Participants.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2432._UI_for_Participants.rb&amp;diff=153969"/>
		<updated>2024-03-24T23:28:05Z</updated>

		<summary type="html">&lt;p&gt;Mkolish: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page is for the description of changes made under E2432 OSS assignment for Spring 2024, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
The aim of this project was to enhance the user interface (UI) for participants in Expertiza, an online peer review application. Initially, the URL structure was modified to accommodate individual participants associated with specific assignment IDs. Furthermore, the UI underwent significant refinements to align with the underlying data schema, enhancing usability and functionality.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is the design diagram for the UI implementation:&lt;br /&gt;
[[File:Description.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
&lt;br /&gt;
=== URL Restructuring: ===&lt;br /&gt;
Initially, our website's link to access participant information was straightforward: [http://localhost:3000/assignments/participants](http://localhost:3000/assignments/participants). This link served as a general entry point to view all participants across different assignments. However, as our project progressed, we recognized the need for a more refined system to handle participants associated with specific assignments. To meet this requirement, we revised the link structure to [http://localhost:3000/assignments/{id}/participants](http://localhost:3000/assignments/{id}/participants), where {id} represents the unique identifier for each assignment. This adjustment enables us to access participant data within a particular assignment directly. By organizing participants in this manner, we enhance the clarity and efficiency of participant management within our application. It serves same for the student tasks as well. &lt;br /&gt;
[[File:URL.png | 900px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Form Refinement ===&lt;br /&gt;
We noticed a mismatch between the fields in our form and the actual participant model. It turned out that fields like role, email, first name, and last name didn't align with the participant model structure. After examining the participant.rb file, we realized that the participant model was associated with the user model and included an assignment ID.&lt;br /&gt;
&lt;br /&gt;
To address the inconsistency, we refined the form by removing unnecessary fields and focusing on essentials. We replaced them with a dropdown menu populated with user options. This menu allows users to select participants for specific tasks and ensures direct association with assignment IDs. This streamlining reduces confusion and aligns participant data seamlessly with the model structure, optimizing the creation process. Users can now efficiently assign participants, enhancing overall system efficiency and accuracy.&lt;br /&gt;
&lt;br /&gt;
==== Old Form ====&lt;br /&gt;
[[File:ParticipantCreate.jpg | 600px]] &lt;br /&gt;
&lt;br /&gt;
==== New Form ====&lt;br /&gt;
[[File:Create_Participant.png | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The user dropdown fetches user names from the backend and populates the dropdown menu. ====&lt;br /&gt;
&lt;br /&gt;
[[File:User_dropdown.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== UI Restructuring ===&lt;br /&gt;
&lt;br /&gt;
We changed how we handle participant creation to better match how modifications are made. Since modifying a participant is essentially like deleting and creating a new one, we removed the edit participant feature from the UI. Instead, we redesigned the UI to focus on a simpler approach to managing participants. This not only makes the system less complex but also makes it easier for users to understand and use. By simplifying the interface, users can navigate and interact with the system more smoothly, resulting in a better overall experience.&lt;br /&gt;
&lt;br /&gt;
[[File:UI_Restructure.png | 1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
For the database, we cloned and set up reimplementation backend following the instructions given.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
interfaces.ts&amp;lt;br&amp;gt;&lt;br /&gt;
App.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
participantColumns.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
ParticipantEditor.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
participantColumns.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
participantUtil.ts&amp;lt;br&amp;gt;&lt;br /&gt;
Participant.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
ParticipantDelete.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
Participant.tsx&amp;lt;br&amp;gt;&lt;br /&gt;
useAPI.ts&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
# URL structure updated to /assignments/{id}/participants and /student_tasks/{id}/participants&lt;br /&gt;
# Participant creation form redesigned to include only essential fields and a user dropdown menu.&lt;br /&gt;
# Edit participant functionality removed, as modification now entails deletion and recreation.&lt;br /&gt;
&lt;br /&gt;
== Testing Details ==&lt;br /&gt;
We tested the pages manually &lt;br /&gt;
&lt;br /&gt;
=== Manage Participants ===&lt;br /&gt;
# Verify that the &amp;quot;Manage Participants&amp;quot; page displays correctly with all necessary options (delete, create) for the participants.&lt;br /&gt;
# Ensure that participant details are presented in a table format.&lt;br /&gt;
&lt;br /&gt;
=== Add Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Add Participant&amp;quot; icon located at the top right corner to ensure that the &amp;quot;Add Participant&amp;quot; option is visible.&lt;br /&gt;
# Click on the &amp;quot;Add Participant&amp;quot; icon and confirm that the create participant popup window appears.&lt;br /&gt;
# In the popup window, verify that the user dropdown menu contains all users from the database.&lt;br /&gt;
# Test the close button to ensure that the popup window closes without creating a new participant.&lt;br /&gt;
# Verify that the create participant popup window closes after successfully creating a new participant.&lt;br /&gt;
# Confirm that the newly created user is populated in the participants table.&lt;br /&gt;
[[File:AddParticipant.jpg | 600px]] [[File:AddedParticipant.jpg | 600px]]&lt;br /&gt;
&lt;br /&gt;
=== Delete Participant ===&lt;br /&gt;
# Hover over the &amp;quot;Delete Participant&amp;quot; icon present in each row of the participant table to ensure its visibility.&lt;br /&gt;
# Click on the &amp;quot;Delete Participant&amp;quot; icon to trigger the delete participant popup window.&lt;br /&gt;
# Verify that the delete participant popup window prompts confirmation (&amp;quot;Are you sure?&amp;quot;).&lt;br /&gt;
# Test the cancel button to ensure that it closes the delete participant popup window without performing the deletion.&lt;br /&gt;
# Click on the delete button within the popup window and confirm that it deletes the participant and closes the popup window.&lt;br /&gt;
# Ensure that the deleted user is removed from the participants table upon successful deletion.&lt;br /&gt;
[[File:DeletePopUp.jpg | 600px]] [[File:Deleted Participant.jpg | 600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
GitHub repository: https://github.com/mahathii/reimplementation-front-end &amp;lt;br&amp;gt;&lt;br /&gt;
Pull request: https://github.com/expertiza/reimplementation-front-end/pull/39&lt;br /&gt;
== Team ==&lt;br /&gt;
=== Mentor === &lt;br /&gt;
Kalyan Karnati&amp;lt;br&amp;gt;&lt;br /&gt;
=== Student Team ===&lt;br /&gt;
Anish Rao Toorpu (atoorpu@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Mahathi Kolishetty (mkolish@ncsu.edu) &amp;lt;br&amp;gt;&lt;br /&gt;
Nitya Naga Sai Atluri (natluri@ncsu.edu) &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mkolish</name></author>
	</entry>
</feed>